AWT
-
예제 9월 2일 Dynamic Menu를 지원하는 풀다운 메뉴2009.09.02
-
예제 9월 1일 이벤트 리스너와 이벤트 핸들러 사용 예2009.09.01
예제 9월 2일 Dynamic Menu를 지원하는 풀다운 메뉴
2009. 9. 2. 16:03
package net.jeongsam.gui; import java.awt.*; import java.awt.event.*; import java.io.*; @SuppressWarnings("serial") public class MiniNotePad extends Frame implements ActionListener { private MenuItem[][] mnuItems; private TextArea taContent; public MiniNotePad() { super("MiniMini Notepad v0"); String[] strMenus = {"파일", "편집", "도움말"}; String[][] strMenuItems = {{"열기", "끝내기"}, {"복사", "잘라내기", "붙여넣기"}, {"이 프로그램은"}}; MenuBar menu = new MenuBar(); Menu[] mnuMenus = new Menu[strMenus.length]; mnuItems = new MenuItem[strMenuItems.length][]; taContent = new TextArea(); for (int i = 0; i < strMenuItems.length; i++) mnuItems[i] = new MenuItem[strMenuItems[i].length]; for (int i = 0; i < strMenuItems.length; i++) { mnuMenus[i] = new Menu(); for (int j = 0; j < strMenuItems[i].length; j++) { mnuItems[i][j] = new MenuItem(); mnuItems[i][j].setLabel(strMenuItems[i][j]); mnuItems[i][j].addActionListener(this); mnuMenus[i].add(mnuItems[i][j]); } } for (int i = 0; i < strMenus.length; i++) { mnuMenus[i].setLabel(strMenus[i]); menu.add(mnuMenus[i]); } add(taContent); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { dispose(); System.exit(0); } }); setMenuBar(menu); setSize(400, 300); setVisible(true); } private void openFile() throws IOException { FileDialog fd = new FileDialog(this, "열기"); fd.setVisible(true); String line = null; BufferedReader br = new BufferedReader( new FileReader(new File(fd.getDirectory() + "\\" + fd.getFile()))); taContent.setText(""); while ((line = br.readLine()) != null) { taContent.setText(taContent.getText() + "\n" + line); } } private void exit() { dispose(); System.exit(0); } public static void main(String[] args) { new MiniNotePad(); } @Override public void actionPerformed(ActionEvent e) { for (MenuItem[] items : mnuItems) for (MenuItem item : items) { if (e.getSource() == item) { cmdSelector(item.getLabel()); } } } public void cmdSelector(String str) { if (str.equals("열기")) try { openFile(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (str.equals("끝내기")) exit(); } }
예제 9월 1일 이벤트 리스너와 이벤트 핸들러 사용 예
2009. 9. 1. 00:44
package net.jeongsam.gui; import java.awt.*; import java.awt.event.*; @SuppressWarnings("serial") class EventEx01 extends Frame implements ActionListener { /** * 프레임에 버튼을 추가하고 윈도우 닫기 이벤트 핸들러 추가. * 버튼에 클릭 이벤트 핸들러 추가. */ public EventEx01() { super("이벤트 예제1"); // 프레임 인스턴스 생성 Button b = new Button("클릭"); // 버튼 인스턴스 생성 b.addActionListener(this); // 버튼 인스턴스에 액션 리스너 인터페이스 등록 setLayout(new FlowLayout()); // 플로우 레이아웃 매니저 지정 add(b); // 프레임에 버튼 인스턴스 추가 /** * 프레임에 종료 버튼의 구현을 위해 윈도우 리스너 등록. * 내부 익명 클래스를 사용하여 윈도우 리스너 인터페이스 대신 윈도우 어댑터 클래스 추가. * -- 윈도우 리스너의 경우 7개의 메서드를 구현해야 하는 반면, 윈도우 어댑터는 필요한 * -- 메서드만 구현하면 된다. */ addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { dispose(); // 현재 리소스 반납후 프레임 종료. System.exit(0); // 프로그램 종료. } }); setSize(400, 300); // 프레임의 폭, 높이 값을 지정. setVisible(true); // 프레임 화면에 표시. } /** * 버튼을 눌렀을 경우 동작하는 이벤트 핸들러 구현 */ @Override public void actionPerformed(ActionEvent arg0) { System.out.println("버튼을 눌렀음."); } public static void main(String[] args) { new EventEx01(); } }