5. 배치관리자 1 AWT 컴포넌트 1. AWT 프로그램과이벤트 2. Component 클래스 3. 메뉴 4. 컨테이너와컨트롤
AWT AWT: Abstract t Window Toolkit GUI 를만들기위한 API 윈도우프로그래밍을위한클래스와도구를포함 Graphical User Interface 그래픽요소를통해프로그램과대화하는방식 그래픽요소를 GUI 컴포넌트라함 2
윈도우프로그램만들기 간단한 AWT 프로그램 import java.awt.*; class MyFrame extends Frame { public MyFrame(String title) { super(title); this.setsize(400, 300); this.setvisible(true); } } public class HelloAWT1 { public static ti void main(string i args[]) { MyFrame myframe = new MyFrame("Hello AWT"); } } 3
이벤트처리하기 이벤트처리과정의예 종료버튼클릭 이벤트가발생하며, 이벤트소스에게전달됨 이벤트처리기가등록되어있는경우, 이벤트처리기가자동실행됨 this.addwindowlistener(new sadd do s e e MyListener()); e 4
5
6
AWT 패키지의 GUI 컴포넌트 클래스유형 클래스 GUI 컨트롤 Button, Label, Canvas, Choice, Checkbox 등 컴포넌트 BorderLayout, FlowLayout, 배치 GridLayout 등 그래픽출력 컨테이너 Color, Font, Point, Graphics, Image 등 Panel, Frame, Window 등 7
클래스계층구조 Component Button Canvas Checkbox Choice Label List Scrollbar Container TextComponent scrollpane Panel Window TextArea TextField Dialog Frame FileDialog 8
기타 AWT 의클래스들 Dimension 컴포넌트의너비와높이를저장 (width, height) Rectangle 사각형정보의저장 (x, y, width, height) Point 2차원상의점을저장 (x, y) 9
Color 기타 AWT 의클래스들 색상을표현하기위한클래스 Color.WHITE, Color.balck, Color.BLUE Cursor 마우스커서의모양설정 Cursor.HAND_CURSOR 등 Font 문자출력에사용되는글자체를표현 이름, 스타일, 크기 Graphics 그래픽정보의저장
Component 클래스 메뉴를제외한대부분 GUI 컴포넌트들의수 퍼클래스역할 Component 클래스는 abstract 클래스로서직접객체를생성할수는없지만, 컴포넌트의기본적인동작에관련된메소드들을정의함 11
Component 클래스의메소드 위치및크기관련메소드 Rectangle getbounds() void setlocation(point p) void setbounds(rectangle r) void setpreferredsize(dimension psize) 그래픽관련메소드 Color getforeground(), void setforeground(color c) Font getfont(), void setfont(font f) boolean isvisible() 12
컴포넌트색칠하기 색칠연산의유발 시스템의의해 컴포넌트가화면에처음등장했을때 크기가변하거나가려졌던부분이드러날때 프로그램에의해 다시칠해야할상황이될때 알고리즘에의해필요한경우 13
paint( ) 메소드 시스템에의해색칠하기가유발된경우자동호출되는콜백메소드 프로그램에서직접호출하지않음 Component 또는 Container 클래스의 paint 를재정의하여사용해야함 public void paint(graphics g) 매개변수 (Graphics 객체 ) : 컴포넌트가화면에그려질때사용되는그래픽관련정보가이미설정됨
15
16
repaint( ) 메소드 프로그램에의해색칠하기가필요한경우호출함 Component 클래스의 repaint를그대로사용하는것이일반적임 ( 중량) 컴포넌트인경우 update() 호출 17
update( ) 메소드 repaint() 에의해호출됨 재정의하지않은경우배경을다시칠하고 paint() 을호출함 재정의하는경우필요한부분만다시그리면효과적 18
19
20
21
Window 클래스 Window 최상위수준의컨테이너 제목이나테두리가없으며메뉴바를가지지않음 생성자 Window(Frame owner), Window(Window owner) 22
Frame 클래스 Frame 최상위수준의컨테이너 제목과테두리가있으며메뉴를 가질수있음 기본레이아웃은 BorderLayout 23
메뉴관련클래스계층구조 Object MenuComponent MenuBar MenuItem Menu CheckboxMenuItem PopupMenu 24
풀다운 (Pull Down) 메뉴 제목표시줄밑의메뉴바를가짐 메뉴만들기과정 MenuBar 객체생성 MenuBar 에추가할 Menu 객체를생성 Menu에추가할또다른서브 Menu객체나 MenuItem 객체를생성하고 Menu 에붙임 생성한 Menu 를 Menubar 에추가 프레임에 MenuBar를붙임 25
팝업 (Popup) 메뉴 팝업메뉴 컨테이너내부에서어디든나타남 메뉴만들기 PopupMenu 객체를생성한다 PopupMenu에 MenuItem이나서브 Menu 객체를추가 PopupMenuP M 를 Frame 에추가 PopupMenu를보이게함 26
27
28
Dialog 클래스 일시적으로화면에나타나사용자입력을받거나메시지를보일때사용 생성자 Dialog(Dialog owner, String title) public Dialog(Frame owner, String title, boolean modal) 29
30
FileDialog 클래스 파일을저장하거나불러오기를할때, 파일을선택할수있게하는대화상자 모달대화상자 생성자 FileDialog(Dialog owner, String title, int mode) : mode는 FileDialog.LOAD 또는 FileDialog.SAVE 메소드 String ggetfile() String getdirectory() 31
32
Button 클래스 이름이있는버튼을표현 생성자 Button(), Button(String label) 메소드 void setlabel(string label), l) String getlabel() 33
34
Canvas 클래스 비어있는사각영역을표현 그림이나글씨를출력하는데사용 다른컨테이너에포함되어존재 35
36
Checkbox 클래스 체크박스표현 생성자 Checkbox(String label, boolean state) Checkbox(String label, boolean state, CheckboxGroup group) : 라디오버튼처럼동작 37
38
Choice 클래스 콤보박스표현 선택할아이템이많은경우사용 현재선택된것이보임 메소드 void additem(string item) void insert(string item, int index) String getitem(int index) int getselectedindex() String getselecteditem() 39
40
List 클래스 하나또는여러개의아이템을선택할수있게함 선택할아이템이매우많을때사용 스크롤가능 생성자 List(int rows, boolean multiplemode) 메소드 void add(string item), void add(string item, int index) String getitem(int index) int getselectedindex() 41
42
Scrollbar 클래스 스크롤바생성 생성자 Scrollbar(int orientation, int value, int visible, ibl int minimum, i int maximum) : orientation은 Scrollbar.HORIZONTAL 또는 Scrollbar.VERTICAL : value 는 bubble 의위치, 기본은 0 : visible 은 bubble 의크기, 기본은 10 : minimum 은 value 의최소치, 기본은 0 : maximum 은 vlaue 의최대치, 기본은 100 43
TextComponent 텍스트를편집하거나다루기위한컴포넌트 TextArea와 TextField의슈퍼클래스 메소드 int getcaretposition() String getselectedtext() String gettext() void select(int start, int end) void settext(string t) 44
TextArea 와 TextField TextArea 여러줄의텍스트편집 생성자 TextArea(String text, int rows, int cols, int scrollbars) 메소드 void append(string text) void insert(string text, int pos) void replacerange(string g text, int start, int end) TextField 한줄의텍스트편집 45
46
Container 클래스 다른컴포넌트를포함하는컴포넌트 추상클래스로기본메소드제공 자식컴포넌트들의배치담당 ScrollPane, Panel, Window 등 47
Container 클래스의메소드 자식컴포넌트관련메소드 Component getcomponentat(point p) Component getcomponent(int n) 배치관련메소드 void setlayout(layoutmanager lm) void validate() Insets getinsets() : Insets 클래스에는경계선의크기정보인 top, left, right, bottom 를가짐 48
Panel 클래스 가장단순한컨테이너 다른패널이나컴포넌트를포함 다른컨테이너에포함되어야함 기본레이아웃은 FlowLayout 49
50
51
ScrollPane 클래스 자동적스크롤기능제공 하나의자식 ( 주로 Panel) 만을포함 배치관리자를둘수없다 마우스휠을이용한스크롤링가능 생성자 ScrollPane(int policy) 메소드 Point getscrollposition() void setscrollposition(int x, int y) 52
53
54
컴포넌트수동배치 부모컴포넌트가자식을수동배치 기본배치관리자를제거함 : setlayout(null) 자식컴포넌트의위치, 크기를설정함 : setbounds() 55
배치관리자의사용 FlowLayout 수평배치 선호크기 (preferred Size) 로배치함 Panel 의기본배치관리자 GridLayout 바둑판모양으로배치 자식컴포들의크기가동일함 56
배치관리자의사용 BorderLayout 동, 서, 남, 북, 중앙에배치 크기가자동조절됨 Window, Frame, Dialog 의기본배치관리자 CardLayout 한번에하나의카드 ( 자식컴포넌트 ) 만나타남 컨테이너에추가된순서또는이름에의해보이게함 57
58
59
60
61