Download presentation
Presentation is loading. Please wait.
Published byΠάρις Ἀσκληπιάδης Μεταξάς Modified 6년 전
1
18장 사용자 인터페이스 18.1 AWT(Abstract Window Toolkit) 18.2 컴포넌트의 이벤트 처리
18.3 Label 클래스 18.4 Buttons 클래스 18.5 Canvas 클래스 18.6 Checkbox와 CheckboxGroup 클래스 18.7 Choice 클래스 18.8 TextField와 TextArea 클래스 18.9 List 클래스 18.10 Scrollbar 클래스 18.11 배치 관리자(Layout Manager) 18.12 Panel 클래스 18.13 Window와 Frame 클래스 18.14 Dialog와 FileDialog 클래스 18.15 메뉴의 사용
2
18.1 AWT(Abstract Window Toolkit)- (1) java.awt 패키지
java.awt 패키지 : GUI 구축을 위한 클래스들의 모임 java.awt 패키지에서 제공되는 클래스들의 유형별 분류 컴포넌트의 배치 BorderLayout, FlowLayout, GridLayout, 와 관련된 클래스 GridBagLayout, GridBagConstraints, CardLayout GUI 구성과 Button, Label, Canvas, Checkbox, Choice, Scrollbar, Component 관련된 클래스 List, Menu, TextComponent, TextArea, MenuBar, MenuItem, TextField, CheckboxGroup, CheckboxMenuItem, MenuComponent 그래픽 출력과 Color, Font, FontMetrics, Rectangle, Point, Polygon, 관련된 클래스 Graphics, Image 컨테이너 클래스 Frame, Panel, Window, Container, FileDialog, Dialog 그 외의 클래스 Insets, Dimension, Toolkit, Event, MediaTracker
3
18.1 AWT(Abstract Window Toolkit)- (1) java.awt 패키지
Button Checkbox Canvas Choice Panel Container ScrollPan Dialog FileDialog Component Label Window List Frame Scrollbar TextArea Object TextComponent TextField MenuBar MenuComponent CheckboxMenuItem MenuItem Menu PopupMenu
4
18.1 AWT(Abstract Window Toolkit)- (2) Container 클래스
Component 클래스 : 16.2절 참조 Container 클래스 : 컴포넌트를 담는 그릇 역할을 하는 클래스 Frame, Window, Dialog, FileDialog, Panel, Applet 등의 하위 클래스를 가지고 있다 컨테이너는 서브(sub) 컨테이너를 가질 수 있다 일반적으로 서브 컨테이너로 Panel 클래스가 많이 사용된다
5
GUI 화면 구성의 예 F A B C H (애플릿 전체) D E G
6
GUI 화면에 대응되는 컴포넌트의 계층 구조 H F G E A B C D
최상위 컨테이너 (Applet) H (애플릿 전체) 컨테이너 (Panel) 컨테이너 (Panel) F G 컨테이너 (Panel) 컨테이너 (Panel) 컨테이너 (Panel) 컨테이너 (Panel) 컨테이너 (Panel) E A B C D 컴포 넌트 컴포 넌트 컴포 넌트 컴포 넌트 컴포 넌트 컴포 넌트 컴포 넌트 컴포 넌트 컴포 넌트 컴포 넌트 (Checkbox) (Checkbox) (Button) (TextArea) (Choice)
7
18.1 AWT(Abstract Window Toolkit)- (2) Container 클래스
Component add(Component c) 컴포넌트 c를 현재의 컨테이너에 추가하고 c를 반환 Component add(String name, Component c) 컴포넌트 c를 컨테이너에 추가. name은 컴포넌트가 놓일 방향을 지시하는 문자열 객체(p 489 참조) void remove(Component c) 컴포넌트 c를 현재의 컨테이너에서 제거 void setLayout(LayoutManager lm) lm으로 지정된 배치관리자를 현재 컨테이너의 배치관리자로 설정 void addContainerListener(ContainerListener cl) 이벤트를 받아들이기 위한 이벤트 리스너를 등록 void removeContainerListener(ContainerListener cl) 이벤트 리스너의 등록을 해제
8
18.2 컴포넌트의 이벤트 처리 GUI 컴포넌트에서 발생하는 전형적인 이벤트 처리 형태(예 : 버튼)
(1) 이벤트와 연관된 인터페이스 또는 아답터 클래스를 사용하여 클래스 생성 public class MyButton extends Applet implements ActionListener (2) GUI 구축을 위한 컴포넌트 객체를 생성 Button mybutton = new Button("선택"); (3) 이벤트를 받아들인 컴포넌트 객체(여기서는 버튼 객체)에 리스너를 등록 mybutton.addActionListener(this); (4) add() 메소드를 사용하여 컴포넌트를 애플릿 또는 컨테이너에 추가 add(mybutton); (5) 이벤트를 처리할 이벤트 처리 루틴 작성(예 : action 이벤트) public void actionPerformed(ActionEvent ae) { label.setText(ae.getActionCommand()) ; } actionPerformed() : ActionListener 인터페이스에 선언된 메소드([표 17-10]) getActionCommand() : ActionEvent 클래스에서 제공되는 메소드이다(17.4절 참조).
9
18.2 컴포넌트의 이벤트 처리 예제
10
18.3 Label 클래스 문자열을 출력하는 기능을 제공 생성자 Label() Label(String str)
Label(String str, int align) str : 라벨로 나타낼 문자열 align : 클래스에 정의된 상수 LEFT, CENTER, RIGHT를 사용하여 위치를 지정 메소드 int getAlignment() 현재 설정된 위치값(LEFT, CENTER, RIGHT)을 반환 int setAlignment(int align) 라벨의 위치 값을 설정 String getText() 현재의 Label 객체가 가지고 있는 문자열을 반환 void setText(String str) 현재의 Label 객체의 문자열을 str로 설정
11
18.3 Label 클래스 예제
12
18.4 Button 클래스 인터페이스 구축에 많이 사용되는 클래스로서 버튼 기능 제공 생성자 메소드 관련 이벤트
Button(String str) str : 버튼에 표시할 문자열 메소드 String getLabel() 버튼의 레이블을 반환 void setLabel(String str) 버튼의 레이블을 str로 설정 관련 이벤트 일반적으로 버튼과 관련된 이벤트는 action 이벤트로 처리
13
18.4 Button 클래스 예제
14
18.5 Canvas 클래스 비어있는 윈도우를 제공하는 클래스 윈도우를 이용하여 다양한 그래픽 출력 가능 생성자
15
18.5 Canvas 클래스 예제
16
18.6 Checkbox와 CheckboxGroup 클래스
GUI 설계시 사용자의 선택 기능을 제공하는 클래스 Checkbox 클래스 생성자 Checkbox() Checkbox(String str) Checkbox(String str, boolean state) Checkbox(String str, boolean state, CheckboxGroup group) Checkbox(String str, CheckboxGroup group, boolean state) str : 체크박스 옆에 나타낼 문자열 state : true이면 체크박스가 처음부터 선택된 상태로 나타난다 group : CheckboxGroup 클래스의 객체로서 체크박스를 그룹으로 묶기위해 사용
17
18.6 Checkbox와 CheckboxGroup 클래스
메소드 boolean getState() 체크박스의 현 상태를 반환 void setState(boolean on) 체크박스의 상태를 on으로 설정 String getLabel() 체크박스의 레이블을 반환 void setLabel(String str) 체크박스의 레이블을 str로 설정 CheckboxGroup 클래스 : Checkbox를 그룹으로 묶는 기능 제공 생성자 CheckboxGroup() Checkbox getSelectedCheckbox() 그룹에서 선택된 체크박스를 반환 void setSelectedCheckbox(Checkbox cb) 그룹에서 cb로 지정된 체크박스를 선택된 상태로 설정 관련 이벤트 : item 이벤트
18
18.6 Checkbox와 CheckboxGroup 클래스
예제
19
18.6 Checkbox와 CheckboxGroup 클래스
예제
20
18.7 Choice 클래스 풀다운 메뉴와 같은 리스트를 제공하는 클래스(리스트중 하나만 선택 가능) 생성자 Choice()
메소드 : 다음 슬라이드 관련 이벤트 : item 이벤트
21
18.7 Choice 클래스 Choice 클래스의 메소드 void add(String str) str로 지정된 항목을 추가
throws NullPointerException void addItem(String str) str로 지정된 항목을 추가 void addItemListener(ItemListener il) 리스너를 등록 String getIndex(int i) i 번째 항목을 반환 int getSelectedIndex() 선택된 항목의 인덱스를 반환 String getSelectedItem() 선택된 항목의 이름(문자열)을 반환 void insert(String str, int i) str로 지정된 항목을 i번째 인덱스 위치에 추가 throws IllegalArgumentException void remove(int i) i 번째 항목을 삭제 void removeAll() 모든 항목을 삭제 void removeItemListener(ItemListener il) 등록된 리스너를 해제 void select(int i) i 번째 항목을 선택 void select(String str) str로 지정된 항목을 선택
22
18.7 Choice 클래스 예제
23
18.8 TextField와 TextArea 클래스
이 두개의 클래스는 TextComponent 클래스로부터 상속된 클래스이다(그림18-1참조) TextComponent 클래스의 주요 메소드 : 다음 슬라이드 TextField 클래스 : 텍스트 한 줄을 입력 받기 위한 클래스 생성자 TextField() TextField(String str) TextField(int cols) TextField(String str, int cols) str : 텍스트 필드에 나타낼 초기 문자열 cols : 텍스트 필드의 폭. 입력되는 내용이 크기를 벗어나면 스크롤 되면서 계속 입력된다.
24
18.8 TextField와 TextArea 클래스
TextComponent 클래스의 주요 메소드 void select(int start, int end) 텍스트의 start 위치부터 end 위치까지를 선택 void selectAll() 컴포넌트의 모든 텍스트를 선택 void setEditable(boolean flag) 컴포넌트의 텍스트를 수정 가능하게 하기 위해서는 flag를 true로하여 이 메소드를 수행. 아니면 false로 설정 void setSelectionEnd(int end) end로 지정된 위치를 선택된 텍스트의 끝으로 설정 void setSelectionStart(int start) start로 저징된 위치를 선택된 텍스트의 시작으로 설정 void setText(String str) 컴포넌트의 텍스트를 str로 설정 void addTextListener(TextListener tl) 리스너를 등록 void removeTextListener(TextListener tl) 리스너를 해제 String getSelectedText() 사용자에 의해 선택된 텍스트를 문자열로 반환 int getSelectionEnd() 선택된 텍스트의 마지막 문자의 인덱스를 반환 int getSelectionStart() 선택된 텍스트의 첫 번째 문자의 인덱스를 반환 String getText() 컴포넌트의 내용을 문자열로 반환 Boolean isEditable() 컴포넌트가 수정 가능하면 true를, 아니면 false를 반환
25
18.8 TextField와 TextArea 클래스
void addActionListener(ActionListener al) ActionListener를 등록 void removeActionListener(ActionListener al) ActionListener를 제거 char getEchoChar() 에코 문자를 반환 void setEchoChar(char c) 컴포넌트에 에코 문자를 설정
26
18.8 TextField와 TextArea 클래스
생성자 TextArea() TextArea(String str) TextArea(int rows, int cols) TextArea(String str, int rows, int cols) TextArea(String str, int rows, int cols, int scrollbars) str : 초기에 나타낼 문자열 rows, cols : 텍스트 창의 폭과 높이 scrollbars : 텍스트 창에 나타낼 스크롤바의 형태를 지정한다. 스크롤바를 지 정하기 위해 상수 사용 SCROLLBARS_BOTH 수직, 수평 스크롤 사용 SCROLLBARS_HORIZONTAL_ONLY 수평 스크롤만 사용 SCROLLBARS_VERTICAL_ONLY 수직 스크롤만 사용 SCROLLBARS_NONE 스크롤 사용 안함
27
18.8 TextField와 TextArea 클래스
void append(String str) str로 지정된 문자열이 첨가된다 void insertText(String str, str로 지정된 문자열이 index로 지정된 위치에 삽입된다 int index) void replaceText(String str, startIndex와 endIndex 사이의 문자열이 str로 대치된다 int startIndex, int endIndex)
28
18.8 TextField와 TextArea 클래스
예제
29
18.9 List 클래스 여러 개의 항목중에 하나 또는 하나 이상을 선택할 수 있는 기능을 제공 생성자 메소드 List()
List(int rows) List(int rows, boolean multiple) rows : 리스트 창의 크기로서 몇 개의 항목을 보이게 할 것인지를 지정 multiple : true로 지정되면 리스트 항목 중에서 여러 개를 선택할 수 있 음을 의미 메소드 void add(String str) str로 지정된 항목을 리스트 객체에 추가 void add(String str, int i) str로 지정된 항목을 리스트의 i 번째 위치에 추가 void addActionListener(ActionListener al) Action 리스너를 등록 void addItemLIstener(ItemListener il) Item 리스너를 등록 void deselect(int i) i번째 인덱스의 항목을 해제 String getItem(int i) i번째 인덱스의 항목을 문자열로 반환
30
18.9 List 클래스 메소드(계속) int getItemCount() 항목의 개수를 반환
String[] getItems() 리스트의 모든 항목을 포함하는 문자열 배열을 반환 int getSelectedIndex() 선택된 항목(한 개)의 인덱스를 반환 int[] getSelectedIndexes() 선택된 항목(여러개)의 인덱스를 정수 배열로 반환 String getSelectedItem() 선택된 항목(한 개)을 문자열로 반환 String[] getSelectedItems() 선택된 항목(여러개)을 문자열 배열로 반환 Object[] getSelectedObjects() 선택된 항목을 Object 의 배열로 반환 boolean isMultipleMode() 현재의 리스트 객체에서 다수개의 항목을 선택할 수 있으면 true를, 아니면 false를 반환 void remove(String str) 리스트에서 str로 지정된 항목을 삭제 void remove(int i) 리스트에서 i번째 인덱스 항목을 삭제 void removeAll() 리스트의 모든 항목을 삭제 void removeActionListener(ActionListener al) Action 리스너의 등록을 해제 void removeItemListener(ItemListener il) Item 리스너의 등록을 해제 void select(int i) i번째 항목을 선택 throws IllegalArgumentException void setMultipleMode(boolean flag) i번다수개의 선택 항목을 위해서는 flag를 true로 설정 하고, 그렇지 않으면 false로 설정째 항목을 선택
31
18.9 List 클래스 예제
32
18.10 Scrollbar 클래스 스크롤바는 다른 컴포넌트와 같이 사용되기도 하지만 독자적으로도 사용될 수 있다 생성자
Scrollbar(int orientation) Scrollbar(int orientation, int value, int width, int min, int max) orientation : 스크롤바의 방향을 지정하는 상수로 HORIZONTAL과 VERTICAL이 사용 value : 스크롤의 초기 값 width : 스크롤 폭의 크기 min, max : 스크롤의 최소값과 최대값
33
18.10 Scrollbar 클래스 메소드 관련 이벤트 : adjustment 이벤트
void addAdjustmentListener(AdjustmentListener al) Adjustment 리스너를 등록 void removeAdjustmentListener(AdjustmentListener al) 등록된 Adjustment 리스너를 제거 int getValue() 스크롤 바의 값을 반환 void setValue(int i) 스크롤 바의 값을 설정 관련 이벤트 : adjustment 이벤트
34
18.10 Scrollbar 클래스 예제
35
18.11 배치 관리자(Layout Manager)
자바는 컨터이너에 컴포넌트를 배치할 수 있는 다양한 방법 을 배치관리자 클래스로 제공 FlowLayout, BorderLayout, GridLayout 등 다양한 배치 관리자 클래스 제공 Container 클래스의 setLayout() 메소드를 사용하여 배치 관리자를 설정
36
18.11 배치 관리자(Layout Manager) - (1) FlowLayout
컴포넌트를 수평 방향으로 배치하는 관리자 생성자 FlowLayout() FlowLayout(int align) FlowLayout(int align, int hgap, int vgap) align : 정렬방식을 지정하는 상수. LEFT, CENTER, RIGHT를 사용 hgap, vgap : 컴포넌트 사이의 수직, 수평 간격을 지정하는 값으로서 픽셀단위
37
18.11 배치 관리자(Layout Manager) - (1) FlowLayout
예제
38
18.11 배치 관리자(Layout Manager) - (2) BorderLayout
컴포넌트를 추가할 때 방향을 지정하여 추가할 수 있는 기 능을 제공. 지정할 수 있는 방향은 East, West, South, North, Center 생성자 BorderLayout() BorderLayout(int hgap, int vgap) hgap, vgap : 컴포넌트들 사이의 간격을 의미하며 픽셀단위로 지정 컴포넌트를 추가하는 add() 메소드에 방향을 지정 void add(String name, Component comp)
39
18.11 배치 관리자(Layout Manager) - (2) BorderLayout
예
40
18.11 배치 관리자(Layout Manager) - (3) GridLayout
컴포넌트를 행과 열을 가진 배열 형태로 배치 생성자 GridLayout() GridLayout(int rows, int cols) GridLayout(int rows, int cols, int hgap, int vgap) rows, cols : 배치할 행과 열 hgap, vgap : 컴포넌트 사이의 간격. 픽셀 단위
41
18.11 배치 관리자(Layout Manager) - (3) GridLayout
예
42
18.12 Panel 클래스 Container 클래스로부터 상속된 클래스로서 컴포넌트들을 담는 그릇역할을 하는 클래스
애플릿에 여러 개의 Panel 객체를 생성. 각각의 Panel 객체 에 배치관리자를 설정하여 컴포넌트들을 배치할 수 있다 생성자 Panel()
43
18.12 Panel 클래스 예
44
18.13 Window와 Frame 클래스 Window 클래스 : 타이틀이나 메뉴가 없는 단순한 윈도우를 제공하는 클래스
메소드 void show() 생성된 윈도우 객체를 나타낸다 void dispose() 윈도우 객체를 제거한다 void pack() 윈도우를 초기 크기로 설정한다 Frame 클래스 : Window 클래스의 하위 클래스. Frame 클래스의 객체는 타이틀이나 메뉴등을 사용할 수 있다. 일반적으로 윈도우를 생성할 때 많이 사용하는 클래스 생성자 Frame() Frame(String title) title : 윈도우의 타이틀 바에 나타낼 문자열
45
18.13 Window와 Frame 클래스 Frame 클래스의 메소드 관련 이벤트 : window 이벤트 발생
MenuBar getMenuBar() 현재 윈도우의 메뉴바를 MenuBar 객체로 반환 void setmenuBar(MenuBar mb) 현재의 윈도우에 mb로 지정된 메뉴바를 설정 String getTitle() 현재 윈도우의 타이틀을 문자열로 반환 void setTitle(String str) 현재 윈도우의 타이틀을 str로 설정 관련 이벤트 : window 이벤트 발생
46
18.13 Window와 Frame 클래스 예
47
18.14 Dialog와 FileDialog 클래스
다이어로그 윈도우 : 사용자에게 간단한 정보를 알리거나 받아들이기 위해 사용 modal 다이어로그 윈도우 : 사용자에 의해 윈도우가 처리(OK 버튼을 누르는 등)되어야만 응용 프로그램이 계속 진행된다 modeless : 다이어로그 윈도우가 사용자에 의해 처리되지 않아도 응용 프로그램이 계속 진행될 수 있다
48
18.14 Dialog와 FileDialog 클래스
생성자 Dialog(Frame parent) Dialog(Frame parent, boolean flag) Dialog(Frame parent, String title) Dialog(Frame parent, String title, boolean flag) parent : 다이어로그 윈도우를 제어하는 Frame 타입의 부모 윈도우 flag : true이면 modal 다이어로그 윈도우를 의미. false이면 modeless 다이어로그 윈도우를 의미 title은 다이어로그 윈도우에 나타낼 타이틀
49
18.14 Dialog와 FileDialog 클래스
파일을 읽어오고 파일을 저장하기 위한 파일 선택 윈도우를 제공하는 클래스 생성자 FileDialog(Frame parent) FileDialog(Frame parent, String str) FileDialog(Frame parent, String str, int rw) parent : 다이어로그 윈도우를 제어하는 부모 윈도우를 의미 str : 타이틀 rw : 파일을 읽어올것인지, 저장할 것인지를 지정하는 상수로서 LOAD와 SAVE가 사용
50
18.14 Dialog와 FileDialog 클래스
tring getDirectory() 디렉토리 경로를 반환 String getFile() 파일 이름을 반환 void setFile(String str) str로 파일 이름을 설정
51
18.14 Dialog와 FileDialog 클래스
예제
52
18.14 Dialog와 FileDialog 클래스
예제
53
18.15 메뉴의 사용 메뉴와 관련된 클래스 : MenuBar, Menu, MenuItem CheckboxMenuItem
54
18.15 메뉴의 사용 메뉴와 관련된 클래스의 계층 구조 Button Checkbox Canvas Choice Panel
Container ScrollPan Dialog FileDialog Component Label Window List Frame Scrollbar TextArea Object TextComponent TextField MenuBar MenuComponent CheckboxMenuItem MenuItem Menu PopupMenu
55
18.15 메뉴의 사용 MenuBar 클래스 : 하나이상의 Menu 객체를 포함한 주메뉴를 작성할 수 기능을 제공
Menu : 하나이상의 MenuItem 객체를 포함하여 하나의 풀다운 메뉴를 작성할 수 있는 기능을 제공 MenuItem : 메뉴리스트의 각 항목을 제공하기 위해 사용 CheckboxMenuItem : 체크 박스 메뉴리스트를 제공하기 위해 사용
56
18.15 메뉴의 사용 MenuBar 클래스 : 하나이상의 Menu 객체를 포함한 주메뉴를 작성할 수 기능을 제공 생성자
메소드 Menu add(Menu m) MenuBar에 메뉴를 추가. m은 MenuBar에 추가될 Menu 객체이며, 이 메소드는 Menu 객체를 MenuBar에 추가하고 추가된 Menu 객체를 반환
57
18.15 메뉴의 사용 Menu 클래스 : 하나이상의 MenuItem 객체를 포함하여 하나의 풀다운 메뉴를 작성할 수 있는 기능을 제공 생성자 Menu() Menu(String menutitle) menutitle : MenuBar에 나타낼 대표 메뉴 이름 메소드 MenuItem add(MenuItem mi) 메뉴에 mi로 지정된 MenuItem 객체를 추가 하고 추가된 항목을 MenuItem 객체로 반환 void add(String menuitem) 메뉴에 menuitem으로 지정된 문자열을 추가
58
18.15 메뉴의 사용 MenuItem 클래스 : 메뉴리스트의 각 항목을 제공하기 위해 사용 생성자
MenuItem(String str) str : 메뉴의 항목으로 나타낼 문자열 관련 이벤트 : 사용자가 메뉴의 항목을 선택하면 action 이벤트가 발생 메소드 void addActionListener(ActionListener al) 리스너를 등록 void removeActionListener(ActionListener al) 리스너를 해제 void setEnabled(boolean flag) flag가 true이면 현재의 메뉴 항목을 선택 상태로 설정
59
18.15 메뉴의 사용 CheckboxMenuItem 클래스 : 체크박스 메뉴 항목을 제공 생성자
CheckboxMenuItem(String str) CheckboxMenuItem(String str, boolean flag) str : 메뉴 항목으로 나타낼 문자열 flag : 나타낼 메뉴의 상태를 지정. flag가 true이면 선택된 상태로 나타 나고, false이면 선택되지 않은 상태로 나타난다 관련 이벤트 : item 이벤트를 발생 메소드 void addItemListener(ItemListener il) 리스너를 등록 void removeItemListener(ItemListener il) 리스너를 해제 boolean getState() 메뉴의 선택 상태를 반환 void setState(boolean flag) 메뉴의 선택 상태를 flag로 지정
60
18.15 메뉴의 사용 프레임 윈도우에 메뉴를 생성하는 과정 1) MenuBar 객체를 생성
2) 생성된 MenuBar 객체를 setMenuBar() 메소드([표 18-12] 참조)를 사용하여 프레임 윈도우에 추가 3) Menu 객체를 생성 4) add() 메소드를 이용하여 MenuBar에 Menu 객체를 추가 5) MenuItem 또는 CheckboxMenuItem 객체를 생성 6) add() 메소드를 이용하여 생성된 메뉴 항목 객체를 Menu에 추가 7) 각각의 항목에 적합한 리스너를 등록하고 이벤트를 처리
61
18.15 메뉴의 사용 예
Similar presentations