I have a new question that I would love some guidance on.
I am creating a GUI program that takes in Contact info from the user and every time the addButton is clicked a Contact object is created and added to an array list, then when the viewButton is clicked that info is all displayed.
I finally got the JTextField info into an ArrayList but, I'm not sure how to add multiple contact info. I added firstNameInput.setText(""); after the first contact info is entered to clear the screen but that also clears the ArrayList. I'm thinking I need some sort of loop but the one I created ended up creating a endless loop. This is all in the ActionPerformed method... I understand why its an endless loop but this is the first time I've used an ArrayList so I'm getting confused.
Pointers in the right direction is greatly appreciated.
public class InputForm extends JFrame {
private JPanel panel;
private JLabel firstNameLabel;
private JLabel lastNameLabel;
private JLabel phoneNumLabel;
private JLabel emailLabel;
private JTextField firstNameInput;
private JTextField lastNameInput;
private JTextField phoneInput;
private JTextField emailInput;
private JButton addButton;
private JButton viewButton;
private String fn;
private String ln;
private String ph;
private String em;
private List<Contact> list = new ArrayList<Contact>();
public InputForm() {
int windowWidth = 650;
int windowHeight = 550;
//Window title
setTitle("CONTACT FORM");
//Set window size.
setSize(windowWidth, windowHeight);
//Exit on close
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Buld the panel and add it the the JFrame.
buildPanel();
//Add the panel to the frames content pane
add(panel);
//Display the window.
setVisible(true);
}
private void buildPanel() {
panel = new JPanel();
addButton = new JButton("Add Contact");
viewButton = new JButton("View Contacts");
firstNameLabel = new JLabel("First Name");
firstNameInput = new JTextField(10);
lastNameLabel = new JLabel("Last Name: ");
lastNameInput = new JTextField(10);
phoneNumLabel = new JLabel("Phone Number: ");
phoneInput = new JTextField(10);
emailLabel = new JLabel("Email: ");
emailInput = new JTextField(10);
/*Add labels, text fields and buttons to the panel*/
panel.add(firstNameLabel);
panel.add(firstNameInput);
panel.add(lastNameLabel);
panel.add(lastNameInput);
panel.add(phoneNumLabel);
panel.add(phoneInput);
panel.add(emailLabel);
panel.add(emailInput);
panel.add(addButton);
panel.add(viewButton);
theHandler handler = new theHandler();
addButton.addActionListener(handler);
viewButton.addActionListener(handler);
}
private class theHandler implements ActionListener {
public void actionPerformed(ActionEvent event) {
fn = firstNameInput.getText();
ln = lastNameInput.getText();
ph = phoneInput.getText();
em = emailInput.getText();
Contact con = new Contact(fn, ln, ph, em);
while(event.getSource() == addButton) {
list.add(con);
fn = firstNameInput.getText();
ln = lastNameInput.getText();
ph = phoneInput.getText();
em = emailInput.getText();
list.add(con);
firstNameInput.setText("");
lastNameInput.setText("");
phoneInput.setText("");
emailInput.setText("");
}
if(event.getSource() == viewButton) {
JOptionPane.showMessageDialog(null,"Contact Info:\n" + con);
}
}
}
}
CONTACT CLASS
public class Contact {
private String fn;
private String ln;
private String ph;
private String em;
public Contact(String fn, String ln, String ph, String em) {
this.fn = fn;
this.ln = ln;
this.ph = ph;
this.em = em;
}
public String getFirstName() {
return fn;
}
public void setFirstName(String fn) {
this.fn = fn;
}
public String getLastName() {
return ln;
}
public void setLastName(String ln) {
this.ln = ln;
}
public String getPhone() {
return ph;
}
public void setPhone(String ph) {
this.ph = ph;
}
public String getEmail() {
return em;
}
public void setEmail(String em) {
this.em = em;
}
public String toString() {
return "First Name: " + getFirstName() + "\n" +
"Last Name: " + getLastName() + "\n" +
"Phone Number: " + getPhone() + "\n" +
"Email: " + getEmail() + "\n";
}
public static void main(String[] args) {
new InputForm();
}
}