프로그래밍/Java
[자바/java] Swing 주소록 만들기
Rolen
2023. 1. 18. 20:05
패키지 안에
-이름, 연락처, 주소를 생성하는데 사용할 클래스
-스윙 / Main 클래스
두 가지로 나누어서 진행
ArrayList로 객체배열 생성




// 연락처에 필요한 정보를 생성자로 담은 class
package phonebook;
import java.util.ArrayList;
class Phonebook{
String name, tel, address;
Phonebook(String n, String t, String a) {
name = n;
tel = t;
address = a;
}
Phonebook(String n, String t) {
name = n;
tel = t;
}
Phonebook(String n) {
name = n;
}
}
// 스윙 , Main class
package phonebook;
import java.awt.event.*;
import java.util.ArrayList;
import javax.swing.*;
import java.awt.*;
class PhoneMain extends JFrame{
JLabel l1, l2, l3;
JTextField t1, t2;
JTextArea ta;
JButton b1, b2, b3;
ArrayList<Phonebook> list = new ArrayList<Phonebook>();
PhoneMain() {
setTitle("연락처");
setSize(313, 280);
setLayout(null);
l1 = new JLabel("이름(필수)"); l2 = new JLabel("전화번호"); l3 = new JLabel("주소");
l1.setBounds(10, 10, 80, 20); add(l1);
l2.setBounds(10, 40, 80, 20); add(l2);
l3.setBounds(10, 80, 80, 20); add(l3);
t1 = new JTextField(""); t1.setBounds(90, 10, 200, 20); add(t1);
t2 = new JTextField(""); t2.setBounds(90, 40, 200, 20); add(t2);
ta = new JTextArea(""); ta.setBounds(10, 100, 280, 80); add(ta);
b1 = new JButton("저장"); b2 = new JButton("검색"); b3 = new JButton("종료");
JPanel panel = new JPanel(new GridLayout(1, 3, 5, 5));
panel.add(b1); panel.add(b2); panel.add(b3);
panel.setBounds(10, 190, 280, 30);
b1.addActionListener(new MyListener());
b2.addActionListener(new MyListener());
b3.addActionListener(new MyListener());
add(panel);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
protected class MyListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
try {
if (e.getSource() == b1) {
list.add(new Phonebook(t1.getText(), t2.getText(), ta.getText()));
ta.setText("이름: "+t1.getText()+"\n전화번호: "+t2.getText()+"\n주소: "+ta.getText()+"\n저장완료!");
t1.setText(""); t2.setText("");
} else if (e.getSource() == b2) {
for (Phonebook pb : list) {
if (t1.getText().equals(pb.name) || t2.getText().equals(pb.tel) || ta.getText().equals(pb.address)) {
ta.setText("이름: "+pb.name+"\n전화번호: "+pb.tel+"\n주소: "+pb.address);
break;
} else {
ta.setText("없는 정보입니다");
}
}
} else {
System.exit(0);
}
} catch(Exception E) {
ta.setText(E.toString());
}
}
}
public static void main(String[] args) {
new PhoneMain();
}
}
728x90