Java Java awt Chonbuk National University Graphics Lab
Java 프로그래밍 및 실습 Java. awt패키지의 컨테이너와 배치방식, 이벤트 처리 Chonbuk National University. Graphics Lab.
개 요 Chonbuk National University. Graphics Lab. -3 -
컨테이너와 이벤트 처리 Chonbuk National University. Graphics Lab. -5 -
배치 관리자와 이벤트 처리 Chonbuk National University. Graphics Lab. -8 -
배치 관리자와 이벤트 처리 • 프레임내에 패널 배치 방식과 이벤트 처리 사용 실습 – 교과서 실습하기[8 -1] 01 import java. awt. *; 02 import java. awt. event. *; 03 04 public class Jv_8_1 extends Frame implements Action. Listener { 05 private Frame f, frm; 06 private Panel pa 1, pa 2, pa 3; 07 private Button bt 1, bt 2, bt 3, bt 4, bt 5, bt 6; 08 private Button bt 7, bt 8, bt 9, bt 10, bt 11, bt 12; 09 10 public Jv_8_1() { 11 f = new Frame("컨테이너(Container)에 온 것을 환영합니다!"); 12 pa 1 = new Panel(); 13 pa 2 = new Panel(); 14 pa 3 = new Panel(); 15 16 bt 1 = new Button("button 1(프레임 생성)"); 17 bt 2 = new Button("button 2(프레임 삭제)"); Chonbuk National University. Graphics Lab. -12 -
배치 관리자와 이벤트 처리 18 bt 3 = new Button("button 3(종료)"); 19 bt 4 = new Button("button 4"); 20 bt 5 = new Button("button 5"); 21 bt 6 = new Button("button 6"); 22 bt 7 = new Button("button 7"); 23 bt 8 = new Button("button 8"); 24 bt 9 = new Button("button 9"); 25 bt 10 = new Button("button 10"); 26 bt 11 = new Button("button 11"); 27 bt 12 = new Button("button 12"); 28 } 29 30 public void start. Frame() { 31 pa 1. set. Layout(new Flow. Layout()); 32 pa 1. set. Background(Color. red); 33 pa 1. add(bt 1); 34 pa 1. add(bt 2); 35 pa 1. add(bt 3); 36 37 pa 2. set. Layout(new Border. Layout()); Chonbuk National University. Graphics Lab. -13 -
배치 관리자와 이벤트 처리 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 pa 2. set. Background(Color. green); pa 2. add("West", bt 4); pa 2. add("Center", bt 5); pa 2. add("East", bt 6); pa 3. set. Layout(new Grid. Layout(3, 2)); pa 3. set. Background(Color. red); pa 3. add(bt 7); pa 3. add(bt 8); pa 3. add(bt 9); pa 3. add(bt 10); pa 3. add(bt 11); pa 3. add(bt 12); f. add(pa 1, Border. Layout. EAST); f. add(pa 2, Border. Layout. CENTER); f. add(pa 3, Border. Layout. WEST); f. pack(); f. set. Size(700, 500); f. set. Visible(true); Chonbuk National University. Graphics Lab. -14 -
배치 관리자와 이벤트 처리 58 59 bt 1. add. Action. Listener(this); 60 bt 2. add. Action. Listener(this); 61 bt 3. add. Action. Listener(this); 62 } 63 64 public void action. Performed(Action. Event ae) { 65 String str = ae. get. Action. Command(); 66 if (str. equals("button 3(종료)")) { 67 System. exit(0); 68 } 69 70 if (ae. get. Source() == bt 1) { 71 bt 1. set. Enabled(false); 72 bt 2. set. Enabled(true); 73 frm = new Frame("New Frame"); 74 frm. set. Bounds(200, 160, 160); 75 frm. set. Visible(true); 76 } 77 else if (ae. get. Source() == bt 2) { Chonbuk National University. Graphics Lab. -15 -
배치 관리자와 이벤트 처리 78 bt 1. set. Enabled(true); 79 bt 2. set. Enabled(false); 80 frm. dispose(); 81 } 82 } 83 84 public static void main(String[] args) { 85 Jv_8_1 kkk = new Jv_8_1(); 86 kkk. start. Frame(); 87 } 88 } Chonbuk National University. Graphics Lab. -16 -
배치 관리자와 이벤트 처리 • 윈도우 생성과 텍스트 필드에서 키보드 이벤트 처리 사용 실습 – 교과서 실습하기[8 -2] 01 import java. awt. *; 02 import java. awt. event. *; 03 04 public class Jv_8_2 extends Frame implements Key. Listener { 05 private Window w; 06 private Text. Area ta; 07 private Text. Field tf; 08 09 public Jv_8_2() { 10 w = new Window(this); 11 w. set. Layout(new Flow. Layout()); 12 w. add(new Label("New Window")); 13 } 14 15 public void start. Frame() { 16 tf = new Text. Field(20); 17 tf. add. Key. Listener(this); Chonbuk National University. Graphics Lab. -18 -
배치 관리자와 이벤트 처리 18 w. add(tf); 19 ta = new Text. Area(5, 20); 20 ta. set. Editable(false); 21 w. add(ta); 22 23 w. set. Location(100, 150); 24 w. set. Background(Color. cyan); 25 w. set. Size(500, 300); 26 w. set. Visible(true); 27 } 28 29 public void key. Typed(Key. Event e) { 30 add. Item(e, "key. Typed"); 31 } 32 33 public void key. Pressed(Key. Event e) { 34 add. Item(e, "key. Pressed"); 35 } 36 37 public void key. Released(Key. Event e) { Chonbuk National University. Graphics Lab. -19 -
배치 관리자와 이벤트 처리 38 add. Item(e, "key. Released"); 39 } 40 41 protected void add. Item(Key. Event e, String s) { 42 char c = e. get. Key. Char(); 43 int kcode = e. get. Key. Code(); 44 ta. append(s + " " + c + " " + kcode + " " + "₩n"); 45 } 46 47 public static void main(String[] args) { 48 Jv_8_2 kkk = new Jv_8_2(); 49 50 kkk. set. Location(50, 100); 51 kkk. set. Size(500, 300); 52 kkk. set. Visible(true); 53 54 kkk. start. Frame(); 55 } 56 } Chonbuk National University. Graphics Lab. -20 -
배치 관리자와 이벤트 처리 • 버튼을 포함하고 있는 프레임 창 사용 실습 – 교과서 실습하기[8 -3] 001 import java. awt. *; 002 import java. awt. event. *; 003 004 public class Jv_8_3 extends Frame implements Action. Listener { 005 Simple. Dialog sdia; 006 Panel p; 007 Button b 1, b 2; 008 009 public Jv_8_3() { 010 p = new Panel(); 011 add(p, "South"); 012 b 1 = new Button("대화상자 생성 버튼"); 013 b 2 = new Button("종료 버튼"); 014 b 1. add. Action. Listener(this); 015 b 2. add. Action. Listener(this); 016 p. add(b 1); 017 p. add(b 2); Chonbuk National University. Graphics Lab. -22 -
배치 관리자와 이벤트 처리 018 } 019 020 public void action. Performed(Action. Event e) { 021 if (e. get. Source() == b 1) { 022 if (sdia == null) { 023 sdia = new Simple. Dialog(this, "Simple Dialog sample"); 024 } 025 else 026 { 027 sdia. set. Visible(true); 028 b 1. request. Focus(); 029 } 030 } 031 032 if (e. get. Source() == b 2) { 033 System. exit(0); 034 } 035 } 036 037 public static void main(String[] args) { Chonbuk National University. Graphics Lab. -23 -
배치 관리자와 이벤트 처리 038 Jv_8_3 win = new Jv_8_3(); 039 win. set. Title("Dialog sample"); 040 win. set. Size(500, 300); 041 win. set. Visible(true); 042 } 043 044 class Simple. Dialog extends Dialog implements Action. Listener { 045 Simple. Dialog ssdia; 046 Panel p 1, p 2; 047 Label lb; 048 Button okbt, cancelbt; 049 String msg 1 = " "; 050 051 Simple. Dialog(Frame parent, String str) { 052 super(parent, str, true); 053 p 1 = new Panel(); 054 p 1. set. Layout(new Border. Layout()); 055 p 1. set. Background(Color. yellow); 056 lb = new Label("간단한 대화상자", Label. CENTER); 057 p 1. add(lb, "Center"); Chonbuk National University. Graphics Lab. -24 -
배치 관리자와 이벤트 처리 058 059 060 061 062 063 064 065 066 067 068 069 070 071 072 073 074 075 076 } 077 p 2 = new Panel(); p 2. set. Layout(new Flow. Layout()); p 2. set. Background(Color. green); p 1. add(p 2, "South"); okbt = new Button("OK"); cancelbt = new Button("Cancel"); p 2. add(okbt); p 2. add(cancelbt); okbt. add. Action. Listener(this); cancelbt. add. Action. Listener(this); add. Window. Listener(new My. Win. Listener()); add(p 1, Border. Layout. NORTH); add(p 2, Border. Layout. SOUTH); set. Size(300, 200); set. Visible(true); Chonbuk National University. Graphics Lab. -25 -
배치 관리자와 이벤트 처리 078 public void action. Performed(Action. Event e) { 079 if (e. get. Source() == okbt) { 080 p 1 = new Panel(); 081 p 1. set. Layout(new Border. Layout()); 082 p 1. set. Background(Color. red); 083 lb = new Label("OK 버튼"); 084 p 1. add(lb); 085 add(p 1); 086 set. Size(300, 200); 087 set. Visible(true); 088 add. Window. Listener(new My. Win. Listener()); 089 okbt. request. Focus(); 090 } 091 092 if (e. get. Source() == cancelbt) { 093 dispose(); 094 } 095 } 096 097 class My. Win. Listener extends Window. Adapter { Chonbuk National University. Graphics Lab. -26 -
배치 관리자와 이벤트 처리 098 public void window. Closing(Window. Event e) { 099 dispose(); 100 } 101 } 102 } 103 } Chonbuk National University. Graphics Lab. -27 -
배치 관리자와 이벤트 처리 • 파일 대화상자 사용 실습 – 교과서 실습하기[8 -4] 01 import java. awt. *; 02 import java. awt. event. *; 03 04 public class Jv_8_4 extends Frame implements Action. Listener { 05 Panel p; 06 Button b 1, b 2; 07 private File. Dialog fdia; 08 private Frame f; 09 10 public Jv_8_4() { 11 f = new Frame(); 12 p = new Panel(); 13 add(p, "South"); 14 b 1 = new Button("파일(file) 대화상자 생성 버튼"); 15 b 2 = new Button("종료 버튼"); 16 p. add(b 1); 17 p. add(b 2); Chonbuk National University. Graphics Lab. -29 -
배치 관리자와 이벤트 처리 18 add(p); 19 20 b 1. add. Action. Listener(this); 21 b 2. add. Action. Listener(this); 22 } 23 24 public void action. Performed(Action. Event e) { 25 if (e. get. Source() == b 1) { 26 fdia = new File. Dialog(f, "열기 대화 창에 온 것을 환영합니다 27 fdia. set. Visible(true); 28 b 1. request. Focus(); 29 } 30 31 if (e. get. Source() == b 2) { 32 System. exit(0); 33 } 34 } 35 36 public static void main(String[] args) { 37 Jv_8_4 win = new Jv_8_4(); Chonbuk National University. Graphics Lab. -30 -
배치 관리자와 이벤트 처리 38 win. set. Title("File Dialog sample"); 39 win. set. Size(500, 300); 40 win. set. Visible(true); 41 } 42 } Chonbuk National University. Graphics Lab. -31 -
배치 관리자와 이벤트 처리 • 스크롤 페인에 첨가된 캔버스 사용 실습 – 교과서 실습하기[8 -5] 01 import java. awt. *; 02 03 class p. Canvas extends Canvas { 04 public p. Canvas() { 05 } 06 public void paint(Graphics g) { 07 g. draw. Oval(0, 0, 399, 299); 08 } 09 } 10 11 public class Jv_8_5 extends Frame { 12 private p. Canvas c; 13 private Scroll. Pane sp; 14 15 public Jv_8_5(String title) { 16 super(title); 17 set. Size(400, 300); Chonbuk National University. Graphics Lab. -33 -
배치 관리자와 이벤트 처리 18 set. Visible(true); 19 c = new p. Canvas(); 20 c. set. Size(400, 300); 21 sp = new Scroll. Pane(); 22 sp. add(c); 23 sp. set. Size(200, 100); 24 add(sp); 25 set. Visible(true); 26 } 27 28 public static void main(String[] args) { 29 new Jv_8_5("스크롤 페인(Scroll. Pane)에 온 것을 환영합니다!"); 30 } 31 } Chonbuk National University. Graphics Lab. -34 -
메뉴와 이벤트 처리 Chonbuk National University. Graphics Lab. -36 -
메뉴와 이벤트 처리 • 메뉴바, 메뉴 및 메뉴 항목 포함한 프레임 사용 실습 – 교과서 실습하기[8 -6] 01 import java. awt. *; 02 import java. awt. event. *; 03 04 public class Jv_8_6 extends Frame implements Action. Listener { 05 Frame f; 06 Menu. Bar mb; 07 Menu fm, em, fsm; 08 Label lb; 09 String msg = " "; 10 11 Menu. Item m 11, m 12, m 13, m 14, m 15, m 16; 12 Menu. Item m 21, m 22, m 23, m 24; 13 Menu. Item m 31, m 32, m 33, m 34, m 35, m 36; 14 15 public Jv_8_6() { 16 f = new Frame("메뉴에 온것을 환영합니다!"); 17 mb = new Menu. Bar(); Chonbuk National University. Graphics Lab. -39 -
메뉴와 이벤트 처리 18 fm = new Menu("파일"); 19 em = new Menu("편집"); 20 fsm = new Menu("파일 단축키"); 21 } 22 23 public void start. Frame() { 24 f. set. Menu. Bar(mb); 25 mb. add(fm); 26 fm. add(m 11 = new Menu. Item("새글 작성")); 27 fm. add(m 12 = new Menu. Item("파일 열기")); 28 fm. add(m 13 = new Menu. Item("파일 저장")); 29 fm. add(m 14 = new Menu. Item("파일 다른 이름 저장")); 30 fm. add. Separator(); 31 fm. add(m 15 = new Menu. Item("내용 출력")); 32 fm. add. Separator(); 33 fm. add(m 16 = new Menu. Item("끝내기")); 34 35 mb. add(em); 36 em. add(m 21 = new Checkbox. Menu. Item("복사")); 37 em. add(m 22 = new Checkbox. Menu. Item("붙여넣기")); Chonbuk National University. Graphics Lab. -40 -
메뉴와 이벤트 처리 38 39 40 41 42 43 em. add. Separator(); em. add(m 23 = new Checkbox. Menu. Item("부분 검색")); em. add(m 24 = new Checkbox. Menu. Item("전체 검색")); mb. add(fsm); fsm. add(m 31 = new Menu. Item("새글 작성", new Menu. Shortcut('N'))); 44 fsm. add(m 32 = new Menu. Item("파일 열기", new Menu. Shortcut('O'))); 45 46 Menu. Item m 33 = new Menu. Item("파일 저장"); 47 m 33. set. Shortcut(new Menu. Shortcut('S')); 48 49 Menu. Shortcut sas = new Menu. Shortcut('S', true); 50 Menu. Item m 34 = new Menu. Item("파일 다른 이름 저장", sas); 51 fsm. add(m 34); 52 53 fsm. add. Separator(); 54 55 fsm. add(m 35 = new Menu. Item("내용 출력", new Chonbuk National University. Graphics Lab. -41 -
메뉴와 이벤트 처리 Menu. Shortcut(Key. Event. VK_P))); 56 57 fsm. add. Separator(); 58 fsm. add(m 36 = new Menu. Item("끝내기", new Menu. Shortcut('X'))); 59 60 lb = new Label 61 (" "); 62 lb. set. Background(Color. yellow); 63 f. add(lb); 64 65 f. set. Size(500, 300); 66 f. set. Visible(true); 67 68 m 11. add. Action. Listener(this); 69 m 12. add. Action. Listener(this); 70 m 13. add. Action. Listener(this); 71 m 14. add. Action. Listener(this); 72 m 15. add. Action. Listener(this); 73 m 16. add. Action. Listener(this); 74 } Chonbuk National University. Graphics Lab. -42 -
메뉴와 이벤트 처리 76 public void action. Performed(Action. Event ae) { 77 msg = "선택 항목 ==> "; 78 79 if (ae. get. Source() == m 11) 80 msg += "새글 작성"; 81 else if (ae. get. Source() == m 12) 82 msg += "파일 열기"; 83 else if (ae. get. Source() == m 13) 84 msg += "파일 저장"; 85 else if (ae. get. Source() == m 14) 86 msg += "파일 다른 이름 저장"; 87 else if (ae. get. Source() == m 15) 88 msg += "내용 출력"; 89 else if (ae. get. Source() == m 16) 90 msg += "끝내기"; 91 92 lb. set. Text(msg); 93 } 94 95 public static void main(String[] args) { Chonbuk National University. Graphics Lab. -43 -
메뉴와 이벤트 처리 96 Jv_8_6 kkk = new Jv_8_6(); 97 kkk. start. Frame(); 98 } 99 } Chonbuk National University. Graphics Lab. -44 -
- Slides: 45