Question: Can someone help me figure out why my java program won't save/update information after being exited out then running the program again to see the

Can someone help me figure out why my java program won't save/update information after being exited out then running the program again to see the updated information! Its basically revolving around serializations. Please Help!

public class Contact { int srno; String FirstName, LastName, PhoneNumber, Email;

public Contact(String FirstName, String LastName, String PhoneNumber, String Email) {

this.FirstName = FirstName;

this.LastName = LastName;

this.PhoneNumber = PhoneNumber;

this.Email = Email;

}

public String getFirstName() {

return FirstName;

}

public void setFirstName(String FirstName) {

this.FirstName = FirstName;

}

public String getLastName() {

return LastName;

}

public void setLastName(String LastName) {

this.LastName = LastName;

}

public String getPhoneNumber() {

return PhoneNumber;

}

public void setPhoneNumber(String PhoneNumber) {

this.PhoneNumber = PhoneNumber;

}

public String getEmail() {

return Email;

}

public void setEmail(String Email) {

this.Email = Email;

}

public int getSrno() {

return srno;

} public void setSrno(int srno) {

this.srno = srno;

} }

import java.util.ArrayList;

import java.util.List;

import javax.swing.JOptionPane;

import javax.swing.table.TableModel;

public class ContactMenu extends javax.swing.JFrame {

List lstContact = new ArrayList<>();

public ContactMenu() {

initComponents();

createFirstFiveItems();

updateTable();

jTable1.setAutoCreateRowSorter(true);

}

private void updateTable() {

TableModel tableModel = new ContactTableModel(lstContact);

jTable1.setModel(tableModel);

}

public List createFirstFiveItems() {

lstContact.add(new Contact("John", "Cenha", "111111", "john@cena.com"));

lstContact.add(new Contact("Mike", "Tyson", "222222", "mike@tyson.com"));

lstContact.add(new Contact("Ken", "WilliamSon", "3333333", "ken@william.com"));

lstContact.add(new Contact("Harry", "Potter", "44444444", "harry@potter.com"));

lstContact.add(new Contact("Robert", "Dwayn", "555555", "robert@dwayn.com"));

return lstContact;

}

private void initComponents() {

btnAdd = new javax.swing.JButton();

jLabel1 = new javax.swing.JLabel();

jLabel2 = new javax.swing.JLabel();

jLabel3 = new javax.swing.JLabel();

jLabel4 = new javax.swing.JLabel();

txtFirstName = new javax.swing.JTextField();

txtLastName = new javax.swing.JTextField();

txtPhone = new javax.swing.JTextField();

txtEmail = new javax.swing.JTextField();

jScrollPane1 = new javax.swing.JScrollPane();

jTable1 = new javax.swing.JTable();

btnDelete = new javax.swing.JButton();

btnUpdate = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

btnAdd.setText("Add Contact");

btnAdd.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

btnAddActionPerformed(evt);

}

});

jLabel1.setText("First Name");

jLabel2.setText("Last Name");

jLabel3.setText("Phone Number");

jLabel4.setText("Email");

jTable1.setModel(

new javax.swing.table.DefaultTableModel(

new Object[][] { { null, null, null, null }, { null, null, null, null },

{ null, null, null, null }, { null, null, null, null } },

new String[] { "Title 1", "Title 2", "Title 3", "Title 4" }));

jTable1.addMouseListener(new java.awt.event.MouseAdapter() {

public void mouseClicked(java.awt.event.MouseEvent evt) {

jTable1MouseClicked(evt);

}

});

jScrollPane1.setViewportView(jTable1);

btnDelete.setText("Delete");

btnDelete.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

btnDeleteActionPerformed(evt);

}

});

btnUpdate.setText("Update");

btnUpdate.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

btnUpdateActionPerformed(evt);

}

});

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

getContentPane().setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup().addGap(26, 26, 26)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 704,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addGroup(layout.createSequentialGroup().addGap(127, 127, 127).addGroup(layout

.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(

layout.createSequentialGroup().addComponent(jLabel1)

.addGap(50, 50, 50)

.addComponent(txtFirstName,

javax.swing.GroupLayout.PREFERRED_SIZE, 178,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(layout.createSequentialGroup().addGroup(layout

.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(jLabel2).addComponent(jLabel3)

.addComponent(jLabel4))

.addGap(31, 31, 31)

.addGroup(layout

.createParallelGroup(

javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(txtLastName,

javax.swing.GroupLayout.PREFERRED_SIZE, 178,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(txtPhone,

javax.swing.GroupLayout.PREFERRED_SIZE,

178, javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(txtEmail,

javax.swing.GroupLayout.PREFERRED_SIZE, 178,

javax.swing.GroupLayout.PREFERRED_SIZE))))

.addGap(37, 37, 37)

.addGroup(layout

.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING,

false)

.addComponent(btnAdd, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(btnDelete, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(btnUpdate, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

Short.MAX_VALUE))))

.addContainerGap(28, Short.MAX_VALUE)));

layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup().addGap(21, 21, 21)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout

.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jLabel1)

.addComponent(txtFirstName, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

.addComponent(btnAdd))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(txtLastName, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(btnDelete))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(txtPhone, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(btnUpdate))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(txtEmail, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(layout.createSequentialGroup().addComponent(jLabel2).addGap(13, 13, 13)

.addComponent(jLabel3)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addComponent(jLabel4)))

.addGap(18, 18, 18)

.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 215, Short.MAX_VALUE)

.addContainerGap()));

pack();

setLocationRelativeTo(null);

}

public static boolean isNumeric(String str) {

try {

double d = Double.parseDouble(str);

} catch (NumberFormatException nfe) {

return false;

}

return true;

}

private void btnDeleteActionPerformed(java.awt.event.ActionEvent evt) {

try {

int selectedRow = jTable1.getSelectedRow();

lstContact.remove(selectedRow);

updateTable();

JOptionPane.showMessageDialog(rootPane, "Contact Removed!");

clearTextBoxes();

} catch (Exception ex) {

JOptionPane.showMessageDialog(rootPane, "Select a row to delete!");

}

}

private void btnAddActionPerformed(java.awt.event.ActionEvent evt) {

if (txtFirstName.getText().equals(""))

JOptionPane.showMessageDialog(rootPane, "Enter First Name");

else if (txtLastName.getText().equals(""))

JOptionPane.showMessageDialog(rootPane, "Enter Last Name");

else if (txtPhone.getText().equals(""))

JOptionPane.showMessageDialog(rootPane, "Enter Phone Number");

else if (!isNumeric(txtPhone.getText()))

JOptionPane.showMessageDialog(rootPane, "Enter phone Number numeric only");

else if (txtEmail.getText().equals(""))

JOptionPane.showMessageDialog(rootPane, "Enter Email");

else if (!isValidEmailAddress(txtEmail.getText()))

JOptionPane.showMessageDialog(rootPane, "Enter a valid Email");

else {

lstContact.add(

new Contact(txtFirstName.getText(), txtLastName.getText(), txtPhone.getText(), txtEmail.getText()));

updateTable();

clearTextBoxes();

JOptionPane.showMessageDialog(rootPane, "Contact added successfully");

}

}

public boolean isValidEmailAddress(String email) {

String ePattern = "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$";

java.util.regex.Pattern p = java.util.regex.Pattern.compile(ePattern);

java.util.regex.Matcher m = p.matcher(email);

return m.matches();

}

private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {

txtFirstName.setText("" + jTable1.getValueAt(jTable1.getSelectedRow(), 1));

txtLastName.setText("" + jTable1.getValueAt(jTable1.getSelectedRow(), 2));

txtPhone.setText("" + jTable1.getValueAt(jTable1.getSelectedRow(), 3));

txtEmail.setText("" + jTable1.getValueAt(jTable1.getSelectedRow(), 4));

}

private void clearTextBoxes() {

txtFirstName.setText(null);

txtLastName.setText(null);

txtPhone.setText(null);

txtEmail.setText(null);

}

private void btnUpdateActionPerformed(java.awt.event.ActionEvent evt) {

try {

lstContact.set(jTable1.getSelectedRow(),

new Contact(txtFirstName.getText(), txtLastName.getText(), txtPhone.getText(), txtEmail.getText()));

updateTable();

JOptionPane.showMessageDialog(rootPane, "Contact Updated!");

jTable1.getSelectionModel().clearSelection();

clearTextBoxes();

} catch (Exception ex) {

JOptionPane.showMessageDialog(rootPane, "Please select a row first");

}

}

public static void main(String args[]) {

try {

for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {

if ("Nimbus".equals(info.getName())) {

javax.swing.UIManager.setLookAndFeel(info.getClassName());

break;

}

}

} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(ContactMenu.class.getName()).log(java.util.logging.Level.SEVERE, null,

ex);

} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(ContactMenu.class.getName()).log(java.util.logging.Level.SEVERE, null,

ex);

} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(ContactMenu.class.getName()).log(java.util.logging.Level.SEVERE, null,

ex);

} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(ContactMenu.class.getName()).log(java.util.logging.Level.SEVERE, null,

ex);

}

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

new ContactMenu().setVisible(true);

}

});

}

private javax.swing.JButton btnAdd;

private javax.swing.JButton btnDelete;

private javax.swing.JButton btnUpdate;

private javax.swing.JLabel jLabel1;

private javax.swing.JLabel jLabel2;

private javax.swing.JLabel jLabel3;

private javax.swing.JLabel jLabel4;

private javax.swing.JScrollPane jScrollPane1;

private javax.swing.JTable jTable1;

private javax.swing.JTextField txtEmail;

private javax.swing.JTextField txtFirstName;

private javax.swing.JTextField txtLastName;

private javax.swing.JTextField txtPhone;

}

import java.util.List;

import javax.swing.table.AbstractTableModel;

public class ContactTableModel extends AbstractTableModel {

private static final int SRNO = 0;

private static final int FIRSTNAME = 1;

private static final int LASTNAME = 2;

private static final int PHONE = 3;

private static final int EMAIL = 4;

private String[] columnNames = { "SrNo", "FirstName", "LastName", "Phone", "Email" };

private List lstContact;

public ContactTableModel(List lsContact) {

this.lstContact = lsContact;

int indexCount = 1;

for (Contact c : lsContact) {

c.setSrno(indexCount++);

}

}

public int getRowCount() {

return lstContact.size();

}

public int getColumnCount() {

return columnNames.length;

}

@Override

public Object getValueAt(int rowIndex, int columnIndex) {

Contact c = lstContact.get(rowIndex);

Object returnValue = null;

switch (columnIndex) {

case SRNO:

returnValue = c.getSrno();

break;

case FIRSTNAME:

returnValue = c.getFirstName();

break;

case LASTNAME:

returnValue = c.getLastName();

break;

case PHONE:

returnValue = c.getPhoneNumber();

break;

case EMAIL:

returnValue = c.getEmail();

break;

default:

throw new IllegalArgumentException("Invalid column index");

}

return returnValue;

}

public String getColumnName(int columnIndex) {

return columnNames[columnIndex];

}

public Class getColumnClass(int columnIndex) {

if (lstContact.isEmpty()) {

return Object.class;

}

return getValueAt(0, columnIndex).getClass();

}

public void setValueAt(Object value, int rowIndex, int columnIndex) {

Contact c = lstContact.get(rowIndex);

if (columnIndex == SRNO) {

c.setSrno((int) value);

}

}

}

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!