Skip to content

Commit ef711ff

Browse files
committed
Address Book Java GUI
1 parent ade11ed commit ef711ff

File tree

1 file changed

+235
-0
lines changed

1 file changed

+235
-0
lines changed
Lines changed: 235 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,235 @@
1+
import javax.swing.*;
2+
import javax.swing.table.DefaultTableModel;
3+
import java.awt.*;
4+
import java.awt.event.ActionEvent;
5+
import java.awt.event.ActionListener;
6+
import java.util.ArrayList;
7+
import java.util.List;
8+
9+
public class AddressBookApplication extends JFrame {
10+
private JTable contactTable;
11+
private DefaultTableModel tableModel;
12+
private JTextField nameField;
13+
private JTextField phoneNumberField;
14+
private JTextField emailField;
15+
private JButton addButton;
16+
private JButton editButton;
17+
private JButton deleteButton;
18+
19+
private List<Contact> contacts;
20+
21+
public AddressBookApplication() {
22+
contacts = new ArrayList<>();
23+
24+
setTitle("Address Book");
25+
setSize(600, 400);
26+
setDefaultCloseOperation(EXIT_ON_CLOSE);
27+
28+
createComponents();
29+
addComponentsToFrame();
30+
}
31+
32+
private void createComponents() {
33+
// Table
34+
tableModel = new DefaultTableModel();
35+
tableModel.addColumn("Name");
36+
tableModel.addColumn("Phone Number");
37+
tableModel.addColumn("Email");
38+
contactTable = new JTable(tableModel);
39+
40+
// Buttons
41+
addButton = new JButton("Add");
42+
editButton = new JButton("Edit");
43+
deleteButton = new JButton("Delete");
44+
45+
// Form fields
46+
nameField = new JTextField(20);
47+
phoneNumberField = new JTextField(20);
48+
emailField = new JTextField(20);
49+
50+
// Button listeners
51+
addButton.addActionListener(new ActionListener() {
52+
public void actionPerformed(ActionEvent e) {
53+
addContact();
54+
}
55+
});
56+
57+
editButton.addActionListener(new ActionListener() {
58+
public void actionPerformed(ActionEvent e) {
59+
editContact();
60+
}
61+
});
62+
63+
deleteButton.addActionListener(new ActionListener() {
64+
public void actionPerformed(ActionEvent e) {
65+
deleteContact();
66+
}
67+
});
68+
}
69+
70+
private void addComponentsToFrame() {
71+
// Main layout
72+
setLayout(new BorderLayout());
73+
74+
// Create a panel for the form fields
75+
JPanel formPanel = new JPanel();
76+
formPanel.setLayout(new GridLayout(3, 2));
77+
formPanel.add(new JLabel("Name:"));
78+
formPanel.add(nameField);
79+
formPanel.add(new JLabel("Phone Number:"));
80+
formPanel.add(phoneNumberField);
81+
formPanel.add(new JLabel("Email:"));
82+
formPanel.add(emailField);
83+
84+
// Create a panel for the buttons
85+
JPanel buttonPanel = new JPanel();
86+
buttonPanel.add(addButton);
87+
buttonPanel.add(editButton);
88+
buttonPanel.add(deleteButton);
89+
90+
// Add the table, form, and button panels to the frame
91+
add(new JScrollPane(contactTable), BorderLayout.CENTER);
92+
add(formPanel, BorderLayout.NORTH);
93+
add(buttonPanel, BorderLayout.SOUTH);
94+
}
95+
96+
private void addContact() {
97+
String name = nameField.getText();
98+
String phoneNumber = phoneNumberField.getText();
99+
String email = emailField.getText();
100+
101+
if (name.isEmpty()) {
102+
showErrorDialog("Please enter a name.");
103+
return;
104+
}
105+
106+
if (!isValidPhoneNumber(phoneNumber)) {
107+
showErrorDialog("Invalid phone number format.");
108+
return;
109+
}
110+
111+
if (!isValidEmail(email)) {
112+
showErrorDialog("Invalid email format.");
113+
return;
114+
}
115+
116+
Contact contact = new Contact(name, phoneNumber, email);
117+
contacts.add(contact);
118+
tableModel.addRow(new Object[]{contact.getName(), contact.getPhoneNumber(), contact.getEmail()});
119+
clearFormFields();
120+
}
121+
122+
private void editContact() {
123+
int selectedRow = contactTable.getSelectedRow();
124+
125+
if (selectedRow == -1) {
126+
showErrorDialog("Please select a contact to edit.");
127+
return;
128+
}
129+
130+
Contact contact = contacts.get(selectedRow);
131+
String name = nameField.getText();
132+
String phoneNumber = phoneNumberField.getText();
133+
String email = emailField.getText();
134+
135+
if (name.isEmpty()) {
136+
showErrorDialog("Please enter a name.");
137+
return;
138+
}
139+
140+
if (!isValidPhoneNumber(phoneNumber)) {
141+
showErrorDialog("Invalid phone number format.");
142+
return;
143+
}
144+
145+
if (!isValidEmail(email)) {
146+
showErrorDialog("Invalid email format.");
147+
return;
148+
}
149+
150+
contact.setName(name);
151+
contact.setPhoneNumber(phoneNumber);
152+
contact.setEmail(email);
153+
tableModel.setValueAt(name, selectedRow, 0);
154+
tableModel.setValueAt(phoneNumber, selectedRow, 1);
155+
tableModel.setValueAt(email, selectedRow, 2);
156+
clearFormFields();
157+
}
158+
159+
private void deleteContact() {
160+
int selectedRow = contactTable.getSelectedRow();
161+
162+
if (selectedRow == -1) {
163+
showErrorDialog("Please select a contact to delete.");
164+
return;
165+
}
166+
167+
contacts.remove(selectedRow);
168+
tableModel.removeRow(selectedRow);
169+
clearFormFields();
170+
}
171+
172+
private void clearFormFields() {
173+
nameField.setText("");
174+
phoneNumberField.setText("");
175+
emailField.setText("");
176+
}
177+
178+
private void showErrorDialog(String message) {
179+
JOptionPane.showMessageDialog(this, message, "Error", JOptionPane.ERROR_MESSAGE);
180+
}
181+
182+
private boolean isValidPhoneNumber(String phoneNumber) {
183+
// Add your phone number validation logic here
184+
return true;
185+
}
186+
187+
private boolean isValidEmail(String email) {
188+
// Add your email validation logic here
189+
return true;
190+
}
191+
192+
private static class Contact {
193+
private String name;
194+
private String phoneNumber;
195+
private String email;
196+
197+
public Contact(String name, String phoneNumber, String email) {
198+
this.name = name;
199+
this.phoneNumber = phoneNumber;
200+
this.email = email;
201+
}
202+
203+
public String getName() {
204+
return name;
205+
}
206+
207+
public void setName(String name) {
208+
this.name = name;
209+
}
210+
211+
public String getPhoneNumber() {
212+
return phoneNumber;
213+
}
214+
215+
public void setPhoneNumber(String phoneNumber) {
216+
this.phoneNumber = phoneNumber;
217+
}
218+
219+
public String getEmail() {
220+
return email;
221+
}
222+
223+
public void setEmail(String email) {
224+
this.email = email;
225+
}
226+
}
227+
228+
public static void main(String[] args) {
229+
SwingUtilities.invokeLater(new Runnable() {
230+
public void run() {
231+
new AddressBookApplication().setVisible(true);
232+
}
233+
});
234+
}
235+
}

0 commit comments

Comments
 (0)