Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

This is a java assignment that I\'m having issues with, can someone please help

ID: 3866810 • Letter: T

Question

This is a java assignment that I'm having issues with, can someone please help me! The issue is after running the program successfully, when adding another contact to the table it won't save that contact after I exited out of the program. I bascially want the contact to be saved permenantly after I exit out of the program and rerun it to see that the contact is still there.

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<Contact> lstContact = new ArrayList<>();

   public ContactMenu() {

   initComponents();

   createFirstFiveItems();

   updateTable();

   jTable1.setAutoCreateRowSorter(true);

   }

   private void updateTable() {

   TableModel tableModel = new ContactTableModel(lstContact);

   jTable1.setModel(tableModel);

   }

   public List<Contact> createFirstFiveItems() {// lstContact is autoboxed to Contact type to resolve typecase issue appeared

   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<Contact> lstContact; // lstContact is autoboxed to Contact type to resolve typecase issue appeared

   public ContactTableModel(List lsContact) {

   this.lstContact = lsContact;

   int indexCount = 1;

   for (Contact c : lstContact) {

   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);

   }

   }

}

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;

   }

}

Explanation / Answer

while your running the code its go main class and there you already defined some rows.

that is default rows for your program and every time when you run this code its reset default rows.

you have to go for file or data base then only you can get updated values. please specifed your requriment.

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote