본문 바로가기
Java

Java GUI - 간단한 메모장 만들기

by leo21c 2012. 12. 1.
SMALL

Java AWT 라이브러리를 이용해서 간단한 메모장 만들기!!

Component를 화면에 정렬하고 Event 몇개를 연결한다.

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;
import java.awt.Label;
import java.awt.List;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.util.HashMap;

public class awt_memo extends Frame implements ActionListener {

	Label lbTitle;
	Panel pnLeft, pnRight;
	
	TextField tf;
	List list;
	TextArea ta;
	Button btAdd, btDel;
	//HashMap에 Data 저장
	HashMap map;
	
	public awt_memo() {
		map = new HashMap();		
		init();
		//프로그램 종료 처리
		WindowListener win = new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}						
		};	
		addWindowListener(win);
	}
	
	public void init() {
		lbTitle = new Label("Memo", Label.CENTER);
		
		//Panel은  Flow 형식으로 Layout이 옆으로 위치한다.
		//그래서 가장 간단한 방법은 Panel을 Frame 방식의 Layout으로
		//변경해서 처리하는 것으로 아래와 같이 BorderLayout 객체를 널어
		//처리하면 된다.
		pnLeft = new Panel(new BorderLayout());
		pnRight = new Panel(new BorderLayout());
		
		tf = new TextField();
		list = new List();
		ta = new TextArea();
		btAdd = new Button("Add");
		btDel = new Button("Del");
		
		tf.addActionListener(this); //이벤트 연결
		list.addActionListener(this);
		btAdd.addActionListener(this);
		btDel.addActionListener(this);
		
		//Layout의 Center는 Frame의 크기에 유동적으로
		//변경이 된다.
		pnLeft.add(tf, BorderLayout.NORTH);
		pnLeft.add(list,BorderLayout.CENTER);
		pnLeft.add(btAdd, BorderLayout.SOUTH);
		
		pnRight.add(ta, BorderLayout.CENTER);
		pnRight.add(btDel, BorderLayout.SOUTH);
		
		this.add(lbTitle, BorderLayout.NORTH);
		this.add(pnLeft, BorderLayout.WEST);
		this.add(pnRight, BorderLayout.CENTER);
		
		this.setSize(400, 400); //크기 지정
		this.setLocation(400,200); //위치 지정
		this.setVisible(true);
	}
	
	public static void main(String[] args) {
		awt_memo am = new awt_memo();
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		Object obj = e.getSource();
		if (obj == tf) {
			String text =tf.getText();
			if (!text.equals("")) {
				list.add(text);
				tf.setText("");
			}
		}
		else if (obj == list) {
			//list를 클릭하면 map에서 value를 읽어 TextArea에 표시
			ta.setText(map.get(list.getSelectedItem()));
		}
		else if (obj == btAdd) {
			//list : key, textarea : value => map에 추가
			map.put(list.getSelectedItem(), ta.getText());
		}
		else if (obj == btDel) {
			if (list.getSelectedIndex() < 0) return;
			//else if (map.size() < 0) return;//확인을 할 필요가 없다.
			String item = list.getSelectedItem(); 
			map.remove(item);
			list.remove(item);
			ta.setText("");
		}
	}
}


TextField에 Text를 입력하고 Enter를 치면 List에 Text가 입력된다.
List의 Text를 더블클릭하면 HashMap에서 List의 값을 Key로 하여 Value를 찾아 TextArea에 표시한다.
Add 버튼을 누르면 List의 선택한 것을 Key로 하고 TextArea에 입력한 내용을 Value로 하여 Map에 저장한다.
Del 버튼을 느루면 List의 선택한 것을 Key로 하여 Map에 저장된 Data를 삭제한다.


LIST

'Java' 카테고리의 다른 글

Java GUI - Image  (0) 2012.12.01
Java GUI - 간단한 Table 이용방법  (0) 2012.12.01
Java GUI - Event  (0) 2012.12.01
JAVA GUI - Frame, Panel  (0) 2012.12.01
Java path 설정 및 에러(classpath) 해결 방법  (0) 2012.11.10