안녕하세요 엘체프 GG임돠
클래스안에 클래스 내부 클래스에 대해 끄적여 봅니다.
GUI어플리케이션(AWT,Swing)등의 이벤트 처리에 주로 사용되고 코드의 복잡성을 줄 수 있다.
-창뛰우기 1
자바에서 지원하는 WindowListener 사용 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | package com.javac.im; import java.awt.*; // JAVA 기본 GUI Component/Container ToolKit // ex) Button, Frame, Panel 등등 import java.awt.event.*; // event = I/O device 현상 // ex) 버튼(장치: device)을 누른다, 마우스(장치 : device)를 클릭한다. // GUI Component(버튼, 메뉴 등등)를 처리하는 방식 // 1. 장치(device -> Component) 이벤트(Event) 발생 // 2. 감지자(Listener) 가 대기 하고 있다가 이벤트 감지. // 3. 핸들러(Event handler)가 이 이벤트를 처리한다. class InnerEx8 { public static void main(String[] args) { Frame f = new Frame(); // Component(컴포넌트)를 포함시킬 Container(컨테이너)를 추가한다. f.setSize(300, 200); // 컨테이너의 크기를 설정한다. f.setLayout(new GridLayout(1,1)); // 레이아웃 매니저의 설정을 해제한다. Button b = new Button("Start"); b.setSize(200, 100); // Button의 크기를 설정한다. f.add(b); // 생성된 Button을 Frame에 포함시킨다. f.setVisible(true); // 화면에 보여지도록 설정한다. // 만약 윈도우 닫기 버튼 "X"이 활성화(작동)되려면 // 아래의 이벤트 리스너와 핸들러를 추가하면 된다. // 추가하지 않을 경우는 Ctrl + Alt+ Del 를 눌러서 프로세서 패널에서 // javaw.exe를 프로세서 종료를 해야 창이 닫히게 된다. f.addWindowListener(new WindowListener() {//모두다 꺼네 써야한다. public void windowClosing(WindowEvent e) { e.getWindow().setVisible(false); e.getWindow().dispose(); System.exit(0); } public void windowOpened(WindowEvent e) { } public void windowClosed(WindowEvent e) { } public void windowIconified(WindowEvent e) { } public void windowDeiconified(WindowEvent e) { } public void windowActivated(WindowEvent e) { } public void windowDeactivated(WindowEvent e) { } } ); // Event Listener(이벤트 리스너) , 간단하게 "리스너"라고 많이 부른다. // : 장치(device)에서 발생하는 I/O(입력/출력) 신호를 감지하는 "감지자" // 메소드의 매개변수가 들어갈 자리에 클래스가 들어감(내부 클래스) // -> 코드가 간결해짐 -> 성능 향상! // 이러한 디자인 패턴을 어댑터 패턴(Adapter pattern)이라고 한다. // 쉽게 말해서 어떤 프로그램에 다른 프로그램 코드를 일부분 처럼 (매개변수로) 끼워써서 // 코드를 간결하게 줄이는 방식. b.addActionListener(new ActionListener() { // 이벤트 핸들러(Event Handler) : 이벤트 처리자 // 실제로 프로그래머는 이 이벤트 처리자(핸들러) 안에서 // 오버라이드(override: 프로그래밍!) 하여 프로그램을 작성. public void actionPerformed(ActionEvent e) { // 이 부분이 프로그래머가 작성한(재정의:override) 부분 System.out.println("ActionEvent occurred!!!"); } } // 익명 클래스의 끝 ); // 리스너의 끝 } // main메서드의 끝 } // InnerEx8클래스의 끝 | cs |
-창뛰우기 2
자바에서 지원하는 WindowAdapter 사용 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | package com.javac.im; import java.awt.*; // JAVA 기본 GUI Component/Container ToolKit // ex) Button, Frame, Panel 등등 import java.awt.event.*; // event = I/O device 현상 // ex) 버튼(장치: device)을 누른다, 마우스(장치 : device)를 클릭한다. // GUI Component(버튼, 메뉴 등등)를 처리하는 방식 // 1. 장치(device -> Component) 이벤트(Event) 발생 // 2. 감지자(Listener) 가 대기 하고 있다가 이벤트 감지. // 3. 핸들러(Event handler)가 이 이벤트를 처리한다. class InnerEx9 { public static void main(String[] args) { Frame f = new Frame(); // Component(컴포넌트)를 포함시킬 Container(컨테이너)를 추가한다. f.setSize(300, 200); // 컨테이너의 크기를 설정한다. f.setLayout(new GridLayout(1,1)); // 레이아웃 매니저의 설정을 해제한다. Button b = new Button("Start"); b.setSize(200, 100); // Button의 크기를 설정한다. f.add(b); // 생성된 Button을 Frame에 포함시킨다. f.setVisible(true); // 화면에 보여지도록 설정한다. // 만약 윈도우 닫기 버튼 "X"이 활성화(작동)되려면 // 아래의 이벤트 리스너와 핸들러를 추가하면 된다. // 추가하지 않을 경우는 Ctrl + Alt+ Del 를 눌러서 프로세서 패널에서 // javaw.exe를 프로세서 종료를 해야 창이 닫히게 된다. f.addWindowListener(new WindowAdapter() { //사용하고 픈거만 꺼네쓸쑤 있다. @Override public void windowClosing(WindowEvent e) { e.getWindow().setVisible(false); e.getWindow().dispose(); System.exit(0); } } ); // Event Listener(이벤트 리스너) , 간단하게 "리스너"라고 많이 부른다. // : 장치(device)에서 발생하는 I/O(입력/출력) 신호를 감지하는 "감지자" // 메소드의 매개변수가 들어갈 자리에 클래스가 들어감(내부 클래스) // -> 코드가 간결해짐 -> 성능 향상! // 이러한 디자인 패턴을 어댑터 패턴(Adapter pattern)이라고 한다. // 쉽게 말해서 어떤 프로그램에 다른 프로그램 코드를 일부분 처럼 (매개변수로) 끼워써서 // 코드를 간결하게 줄이는 방식. b.addActionListener(new ActionListener() { // 이벤트 핸들러(Event Handler) : 이벤트 처리자 // 실제로 프로그래머는 이 이벤트 처리자(핸들러) 안에서 // 오버라이드(override: 프로그래밍!) 하여 프로그램을 작성. public void actionPerformed(ActionEvent e) { // 이 부분이 프로그래머가 작성한(재정의:override) 부분 System.out.println("ActionEvent occurred!!!"); } } // 익명 클래스의 끝 ); // 리스너의 끝 } // main메서드의 끝 } // InnerEx8클래스의 끝 | cs |
감사합니다.
'스터디 > JAVA' 카테고리의 다른 글
자바 컬렉션프레임워크(CollectionFramework)_2 (296) | 2018.02.22 |
---|---|
자바 컬렉션프레임워크(CollectionFramework)_1 (302) | 2018.02.22 |
자바 for문 별찍기 (292) | 2018.01.30 |
자바 2차원배열 성적구하기 (6) | 2018.01.30 |
자바 반복문 성적내기 (8) | 2018.01.30 |