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
Get step-by-step solutions from verified subject matter experts
