// import java.awt.*; public class AWTExample extends Frame { MyButton btn; public AWTExample() { setTitle("자바 AWT 예제 프로그램"); setLayout(new FlowLayout()); // 레이아웃 관리자를 FlowLayout으로 지정 add(btn=new MyButton("Button")); /* 레이아웃 관리자가 지정되면 컨테이너 내부에 하위 윈도 우를 생성, 배치하는 것은 add()를 사용한다. */ add(new Checkbox("Checkbox")); add(new Label("Label")); List list=new List(3, true); /* 초기에 화면에 보여지는 아이템 개수를 셋으로 하고 동시에 여러 개를 선택할 수 있는지 여부를 참으로하여 리스트 박스를 생성 */ add(list); list.addItem("List 1"); list.addItem("List 2"); list.addItem("List 3"); list.addItem("List 4"); add(new Scrollbar(Scrollbar.VERTICAL)); // 세로로 된 스크롤 바 생성 add(new TextArea("TextArea Example", 3, 8)); // 초기값으로 스트링이 "TextArea Example", 3행 8칸인 텍스트박스 생성 add(new TextField("TextField Example", 9)); // 초기값으로 스트링이 "TextField Example"이고 9칸인 텍스트필드 생성 pack(); // 레이아웃된 컴퍼넌트 윈도우들을 재배치한다. show(); // 윈도우를 화면에 표시한다. } public boolean handleEvent(Event evt) { // 각 하위 윈도우에서 발생하는 이벤트들을 여기에서 핸들링한다. System.out.println("이벤트 발생..."); return true; } public static void main(String args[]) { // 프로그램을 실행하면 main()이 호출된다. new AWTExample(); } } class MyButton extends Button { /* 버튼이 눌려지면 프로그램을 종료하도록 하는 콜백 함수를 넣기 위해 Button 클래스에서 MyButton 클래스를 파생 */ MyButton(String s) { super(s); // s라는 스트링을 가진 버튼을 생성 } public boolean action(Event e, Object arg) { /* 서브 클래싱-버튼이 눌려지면 상위 윈도우인 프레임으로부터 이벤트를 전달받아서 처리한다. */ System.out.println(((Button)e.target).getLabel()); /* Event 클래스의 target 필드는 이벤트가 발생한 윈도우를 가리킨다. */ System.exit(0); return true; } }