프로그래밍/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