AWT 컴포넌트 (2) 1. 메뉴 2. 컨테이너와컨트롤 3. 배치관리자 메뉴관련클래스계층구조 Object MenuComponent MenuBar MenuItem Menu CheckboxMenuItem PopupMenu
메뉴 풀다운메뉴 제목표시줄밑의메뉴바를가짐 메뉴만들기과정 MenuBar 객체생성 MenuBar 에추가할 Menu 객체를생성 Menu 에추가할또다른서브 Menu 객체나 MenuItem 객체를생성하고 Menu 에붙임 생성한 Menu 를 Menubar 에추가 프레임에 MenuBar 를붙임 import java.awt.*; public class PulldownMenu { public static void main(string args[]) { Frame f = new Frame("Pulldown Menu"); MenuBar mb = new MenuBar(); Menu m = new Menu("Menu1"); m.add(new MenuItem("MenuItem1")); Menu sm = new Menu("SubMenu1"); sm.add(new MenuItem("SubMenuItem1")); sm.add(new MenuItem("SubMenuItem2")); m.add(sm); m.add(new MenuItem("MenuItem2")); mb.add(m); f.setmenubar(mb); f.setsize(200, 200); f.setbackground(color.white); f.setvisible(true);
메뉴 팝업메뉴 컨테이너내부에서어디든나타남 메뉴만들기 PopupMenu 객체를생성한다 PopupMenu 에 MenuItem 이나서브 Menu 객체를추가 PopupMenu 를 Frame 에추가 PopupMenu 를보이게함 Dialog 클래스 일시적으로화면에나타나사용자입력을받거나메시지를보일때사용 Dialog(Dialog owner, String title) public Dialog(Frame owner, String title, boolean modal)
FileDialog 클래스 파일을저장하거나불러오기를할때, 파일을선택할수있게하는대화상자 모달대화상자 FileDialog(Dialog owner, String title, int mode) : mode 는 FileDialog.LOAD 또는 FileDialog.SAVE 메소드 String getfile() String getdirectory() Button 클래스 이름이있는버튼을표현 Button(), Button(String label) 메소드 void setlabel(string label), String getlabel()
import java.awt.*; public class ButtonTest extends 클래스 Frame{ public ButtonTest(String title) { super(title); this.setsize(400, 300); this.setvisible(true); public static void main(string args[]) { ButtonTest bt = new ButtonTest("Buttons"); Button b_ok = new Button("OK"); b_ok.setbounds(10, 240, 50, 50); bt.add(b_ok); Button b_cl = new Button("Cancel"); b_cl.setbounds(70, 240, 50, 50); b_cl.setenabled(false); bt.add(b_cl); Canvas 클래스 비어있는사각영역을표현 그림이나글씨를출력하는데사용 다른컨테이너에포함되어존재
Checkbox 클래스 체크박스표현 Checkbox(String label, boolean state) Checkbox(String label, boolean state, CheckboxGroup group) : 라디오버튼처럼동작 Checkbox 클래스 import java.awt.*; public class CheckboxTest { public static void main(string[] args) { Frame f = new Frame("Checkbox"); f.setlayout(new FlowLayout()); f.add(new Checkbox("Whiskey")); f.add(new Checkbox("Beer")); CheckboxGroup group = new CheckboxGroup(); f.add(new Checkbox("Yes", false, group)); f.add(new Checkbox("No", true, group)); f.setsize(300, 80); f.setvisible(true);
Choice 클래스 콤보박스표현 선택할아이템이많은경우사용 현재선택된것이보임 메소드 void additem(string item) void insert(string item, int index) String getitem(int index) int getselectedindex() String getselecteditem() List 클래스 하나또는여러개의아이템을선택할수있게함 선택할아이템이매우많을때사용 스크롤가능 List(int rows, boolean multiplemode) 메소드 void add(string item), void add(string item, int index) String getitem(int index) int getselectedindex()
Scrollbar 클래스 스크롤바생성 Scrollbar(int orientation, int value, int visible, int minimum, int maximum) : orientation 은 Scrollbar.HORIZONTAL 또는 Scrollbar.VERTICAL : value 는 bubble 의위치, 기본은 0 : visible 은 bubble 의크기, 기본은 10 : minimum 은 value 의최소치, 기본은 0 : maximum 은 vlaue 의최대치, 기본은 100 TextComponent 텍스트를편집하거나다루기위한컴포넌트 TextArea와 TextField의슈퍼클래스 메소드 int getcaretposition() String getselectedtext() String gettext() void select(int start, int end) void settext(string t)
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 text, int start, int end) TextField 한줄의텍스트편집 Container 클래스 다른컴포넌트를포함하는컴포넌트 추상클래스로기본메소드제공 자식컴포넌트들의배치담당 ScrollPane, Panel, Window 등 컨테이너에포함되는추가되는컴포넌트들은순서지정이없다면뒤로들어감
Container 클래스의메소드 자식컴포넌트관련메소드 Component getcomponentat(point p) Component getcomponent(int n) 배치관련메소드 void setlayout(layoutmanager lm) void validate() Insets getinsets() : Insets 클래스에는경계선의크기정보인 top, left, right, bottom를가짐 Panel 클래스 가장단순한컨테이너 다른패널이나컴포넌트를포함 다른컨테이너에포함되어야함 기본레이아웃은 FlowLayout
Panel 클래스 Panel Panel Applet ScrollPane 클래스 자동적스크롤기능제공 하나의자식만을포함 배치관리자를둘수없다 마우스휠을이용한스크롤링가능 ScrollPane(int policy) 메소드 Point getscrollposition() void setscrollposition(int x, int y)
컴포넌트수동배치 부모컴포넌트가자식을수동배치 기본배치관리자를제거함 : setlayout(null) 자식컴포넌트의위치, 크기를설정함 : setbounds() 배치관리자의사용 FlowLayout 수평배치 선호크기 (preferred Size) 로배치함 Panel 의기본배치관리자 GridLayout 바둑판모양으로배치 자식컴포들의크기가동일함
배치관리자의사용 BorderLayout 동, 서, 남, 북, 중앙에배치 크기가자동조절됨 Window, Frame, Dialog 의기본배치관리자 CardLayout 한번에하나의카드 ( 자식컴포넌트 ) 만나타남 컨테이너에추가된순서또는이름에의해보이게함