46
AWT 프프프프프 프프프프프프 프프프 프프 프프프 410 프 [email protected]

AWT 프로그래밍

Embed Size (px)

DESCRIPTION

AWT 프로그래밍. 컴퓨터정보과 안유정 교수 연구동 410 호 [email protected]. AWT programming. AWT A bstract W indow T oolkit 윈도우 기반으로 자바에서 GUI 를 작성할 수 있도록 함 GUI(Graphic User Interface) 자바 AWT 는 java.awt 패키지 를 통하여 제공 java.awt 패키지안에 인터페이스와 이벤트에 관련된 클래스들이 들어있다. AWT Programming. 컴포넌트 (Component) - PowerPoint PPT Presentation

Citation preview

Page 1: AWT  프로그래밍

AWT 프로그래밍

컴퓨터정보과 안유정 교수연구동 410 호 [email protected]

Page 2: AWT  프로그래밍

AWT programmingAWT programming

AWT Abstract Window Toolkit

윈도우 기반으로 자바에서 GUI 를 작성할 수 있도록 함

GUI(Graphic User Interface)

자바 AWT 는 java.awt 패키지를 통하여 제공 java.awt 패키지안에 인터페이스와 이벤트에

관련된 클래스들이 들어있다 .

Page 3: AWT  프로그래밍

AWT ProgrammingAWT Programming

컴포넌트 (Component) 화면을 구성하는 사용자 인터페이스 요소 예 ) 버튼 , 체크박스 , 선택박스 , 리스트 , 텍스트 , 다이얼로그 박스 , 메뉴 , 스크롤바등 컴포넌트들은 각각 클래스로 정의되어 있으며 추상 클래스인 java.awt.Component 의

하위 클래스이다 .

이벤트 프로그래밍 각 컴포넌트에 대한 사용자의 행동을 처리할 수 있게 하는 방법 대부분의 컴포넌트들은 한 개 이상의 이벤트들과 연관된다 . 자바에서는 각 이벤트들을 클래스로 정의하고 있다 . 예 ) 버튼을 클랙하는 이벤트 : ActionEvent 클래스

Page 4: AWT  프로그래밍

CardLayout

Object

CheckboxGroup

Button

Canvas

Checkbox

Label

List

Scrollbar

Panel

Window

MenuBar

MenuItem

FlowLayout

BorderLayout

GridLayout GridLayout

Applet

Frame

TextField

TextArea

Menu

CheckboxMenuItem

Dialog FileDialog

java.applet

Class

Choice

Object

CheckboxGroup

Component

MenuComponent

Container

MenuBar

FlowLayout

GridLayout GridLayout

Applet

Frame

Menu

java.applet 패키지 안의 클래스

Abstract classCardLayout

WindowScrollPane

TextComponent

AWT ProgrammingAWT Programming컴포넌트 클래스들 대부분 java.awt 패키지내 에 정의되어 있다 .

Page 5: AWT  프로그래밍

ActionEvent 버튼이 눌려지거나 , 리스트의 한 항목이 더블 클릭되어 선택되거나 , 메뉴의 한 항목이 선택되었을 때 발생

AdjustmentEvent 사용자가 스크롤바를 움직였을 때 발생ComponentEvent 컴포넌트가 감춰지거나 , 감춰진 상태에서 다시 나타날 때 , 컴포넌트를

이동하였을 때 , 크기를 조정하였을 때 발생ContainerEvent 컨테이너에 컴포넌트가 추가되거나 제거 되었을 때 발생 (18 장 참조 )

FocusEvent 컴 포 넌 트 가 키 보 드 입 력 을 받 아 들 일 수 있 는 초 점 (focus) 을 획득하거나 ,

초점을 잃었을 때 발생ItemEvent 체크박스나 리스트의 한 항목이 선택되었을 때 , 메뉴의 한 항목이

선택되거나 , 선택된 항목이 해제되었을 때 발생KeyEvent 키보드로부터 입력이 일어났을 때 발생MouseEvent 마우스의 버튼이 눌려지고 띠어질 때 , 움직일 때 , 드래그 (drag) 할 때 ,

마우스의 초점이 컴포넌트 영역에 들어가거나 나올 때 발생TextEvent text area 나 text field 에서 값이 입력될 때 발생WindowEvent 윈도우가 활성화 (activate) 되거나 비활성화 될 때 , 아이콘화 될 때 ,

아이콘으로부터 윈도우로 복구될 때 , 윈도우가 open, close, quit 될 때

발생

이벤트 종류이벤트 종류자바의 이벤트 클래스들

Page 6: AWT  프로그래밍

이벤트 프로그래밍 순서이벤트 프로그래밍 순서

1. 사용될 인터페이스와 이벤트들을 포함할 클래스를 만들자 public class MyButton extends Frame implements ActionListener

2. 인터페이스인 컴포넌트 객체를 만들자Button b = new Button(“ 확인”);

3. 만든 컴포넌트 객체에 이벤트를 연결하자b.addActionListener(this);

4. 만든 컴포넌트를 결과 창에 출력하자add(b);

5. 이벤트 발생할때 무슨일을 해야하는지 프로그램하자public void actionPerformed (ActionEvent ae) {

……

// 예 : 버튼 클릭하면 창이 열리도록 }

Page 7: AWT  프로그래밍

컴포넌트컴포넌트 (( 버튼버튼 ))

Button 클래스

버튼을 만들때 사용하는 자바의 클래스

버튼클릭하는 이벤트는 ActionEvent

Button 클래스에 속한 메소드

String getLabel() // 버튼위의 글자를 읽어온다 .

void setLabel(String label) // 버튼에 출력될 글자를 지정한다 .

Page 8: AWT  프로그래밍

컴포넌트컴포넌트 (( 버튼버튼 ))

버튼 생성 방법 Button() // 단순히 버튼 생성 Button(String) // 레이블을 주어 생성

버튼 만들어서 이벤트 연결하고 출력하는 예Button b = new Button(" 확인 ");

b.addActionListener(this);

add(b);

Page 9: AWT  프로그래밍

컴포넌트컴포넌트 (( 레이블레이블 ))

Label 클래스다른 컴포넌트 위 또는 옆에 글자를 출력할때 사용Label 객체를 만들어 글자를 넣으면 됨Label 객체에는 이벤트 연결 필요 없음

Label 클래스에 속한 메소드

String getText() // 레이블위의 글자를 읽어온다 .

void setText(String text) // 레이블에 글자를 작성한다 .

void setAlignment(int align) // 레이블 위 글자의 정렬상태를 지정

Page 10: AWT  프로그래밍

컴포넌트컴포넌트 (( 레이블레이블 ))

필드에 레이블 붙이는 방법

레이블을 만들어 출력하는 예

public Label() { this("", LEFT); }

public Label(String text) { this(text, LEFT); }

public Label(String text, int alignment)

public Label() { this("", LEFT); }

public Label(String text) { this(text, LEFT); }

public Label(String text, int alignment)

Label.LEFTLabel.RIGHTLabel.CENTER

Label grade = new Label (“2 학년 ");

add(grade);

Page 11: AWT  프로그래밍

버튼과 레이블을 이용한 예제 해보기

클릭하면

Page 12: AWT  프로그래밍

[ 예제 버튼만들기 ] - ButtonEventsTest.java

import java.applet.*;import java.awt.*;import java.awt.event.*;

public class ButtonEventsTest extends Applet implements ActionListener { // ActionEvent 를 사용하는 클래스를 작성

Label label1, label2; // Label 객체를 선언 public void init() { Button b1 = new Button(" 남자 "); // 버튼 객체 생성 b1.addActionListener(this); // 생성된 버튼 객체에 ActionListener 를 등록 add(b1); // 버튼 객체를 컨테이너 객체인 애플릿에 추가

Button b2 = new Button(" 여자 "); b2.addActionListener(this); add(b2);

label1 = new Label(" 당신의 성별은 ?"); add(label1); label2 = new Label(" "); add(label2); }

Page 13: AWT  프로그래밍

[ 예제 버튼만들기 ] ( 계속 )

public void actionPerformed(ActionEvent ae) { // 버튼이 눌려지면 수행될 이벤트 처리 메소드 작성

label2.setText(ae.getActionCommand()); // ActionEvent 클래스의 getActionCommand() 메소드를 // 이용하여 클릭된 버튼의 이름을 가져와 label2 객체의 // 텍스트로 나타낸다 }

}

Page 14: AWT  프로그래밍

[ 예제 버튼 만들기 ]- ButtonEventsTest.html

<html><head><title> 버튼 이벤트 처리 </title></head><body> <applet code="ButtonEventsTest" width=500 height=60> </applet></body></html>

Page 15: AWT  프로그래밍

컴포넌트컴포넌트 (( 체크박스체크박스 ))

Checkbox 클래스

주어진 항목들 중에서 여러 개를 선택할 수 있는 컴포넌트

Checkbox 의 한 항목 클릭시 , ItemEvent 이벤트 발생

체크박스 .vs. 라디오버튼 비교 체크박스 : 주어진 항목들 중에서 여러 개를 선택 라디오 버튼 : 오직 하나만 선택 가능

Checkbox() // 선택되지 않은 빈 체크박스 생성

Checkbox(String) // 주어진 문자열을 가진 체크박스 생성

Checkbox(String, null, boolean) // boolean 값이 true 이면 선택된 체크박스 생성

Checkbox() // 선택되지 않은 빈 체크박스 생성

Checkbox(String) // 주어진 문자열을 가진 체크박스 생성

Checkbox(String, null, boolean) // boolean 값이 true 이면 선택된 체크박스 생성

Page 16: AWT  프로그래밍

컴포넌트컴포넌트 (( 체크박스체크박스 ))

getLabel() : 체크박스의 레이블 값을 얻음setLabel() : 체크박스에 레이블을 지정함getState() : 체크박스가 선택되었는지 유무를 확인setState() : 선택상태를 지정

Checkbox 클래스의 메소드

Page 17: AWT  프로그래밍

컴포넌트컴포넌트 (( 체크박스체크박스 ))

Checkbox c1 = new Checkbox(" 딸기 ", null, true);

Checkbox c2 = new Checkbox(" 사과 ");

Checkbox c3 = new Checkbox(" 수박 ", null, true);

Checkbox c4 = new Checkbox(" 오렌지 ");

C1.addItemListener(this);

C2.addItemListener(this);

C3.addItemListener(this);

C4.addItemListener(this);

add(c1); add(c2); add(c3); add(c4);

Checkbox c1 = new Checkbox(" 딸기 ", null, true);

Checkbox c2 = new Checkbox(" 사과 ");

Checkbox c3 = new Checkbox(" 수박 ", null, true);

Checkbox c4 = new Checkbox(" 오렌지 ");

C1.addItemListener(this);

C2.addItemListener(this);

C3.addItemListener(this);

C4.addItemListener(this);

add(c1); add(c2); add(c3); add(c4);

체크박스 만들어서 이벤트연결하고 출력하는 예

Page 18: AWT  프로그래밍

컴포넌트컴포넌트 (( 라디오 버튼라디오 버튼 ))

CheckboxGroup 클래스라디오 버튼 객체를 생성하기 위한 클래스CheckboxGroup 의 객체를 생성한 후 , 같은 그룹안에 넣을 Checkbox 객체들을 만들어 체크박스그룹에 넣음

라디오버튼의 항목 클릭시 , ItemEvent 이벤트 발생

CheckboxGroup() ; // 라디오 버튼의 그룹을 형성

Checkbox(String, CheckboxGroup, boolean) // 라 디 오 버 튼 그 룹 안 에 버튼생성

CheckboxGroup() ; // 라디오 버튼의 그룹을 형성

Checkbox(String, CheckboxGroup, boolean) // 라 디 오 버 튼 그 룹 안 에 버튼생성

Page 19: AWT  프로그래밍

컴포넌트컴포넌트 (( 라디오 버튼라디오 버튼 ))

라디오버튼 만들어서 이벤트연결하고 출력하는 예

CheckboxGroup cbg = new CheckboxGroup();

Checkbox c1 = new Checkbox(" 사이다 ", cbg, false);

Checkbox c2 = new Checkbox(" 콜라 ", cbg, true);

Checkbox c3 = new Checkbox(" 오렌지쥬스 ", cbg, false);

Checkbox c4 = new Checkbox(" 녹차 ", cbg, false);

C1.addItemListener(this);

C2.addItemListener(this);

C3.addItemListener(this);

C4.addItemListener(this);

add(c1); add(c2); add(c3); add(c4);

CheckboxGroup cbg = new CheckboxGroup();

Checkbox c1 = new Checkbox(" 사이다 ", cbg, false);

Checkbox c2 = new Checkbox(" 콜라 ", cbg, true);

Checkbox c3 = new Checkbox(" 오렌지쥬스 ", cbg, false);

Checkbox c4 = new Checkbox(" 녹차 ", cbg, false);

C1.addItemListener(this);

C2.addItemListener(this);

C3.addItemListener(this);

C4.addItemListener(this);

add(c1); add(c2); add(c3); add(c4);

해당항목의 초기 선택여부

Page 20: AWT  프로그래밍

체크박스와 라디오버튼을 이용한 예제

Page 21: AWT  프로그래밍

[ 예제 라디오버튼 만들기 - CheckBoxTest.java] _________________________________________ import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class CheckBoxTest extends Applet implements ItemListener { Checkbox g1, g2, g3, h1, h2, h3, h4; String str=""; Label answer; public void init() { Label l1 = new Label(" 당신의 학년은 ?"); Label l2 = new Label(" 당신의 취미는 ?"); answer = new Label(" ");

CheckboxGroup grade = new CheckboxGroup(); // 학년 선택은 라디오버튼 g1 = new Checkbox("1 학년 ", grade, false); g2 = new Checkbox("2 학년 ", grade, true); g3 = new Checkbox("3 학년 ", grade, false);

h1 = new Checkbox(" 영화 ", null, false); // 취미 선택은 체크박스 h2 = new Checkbox(" 독서 ", null, false); h3 = new Checkbox(" 여행 ", null, false); h4 = new Checkbox(" 게임 ", null, false);

Page 22: AWT  프로그래밍

g1.addItemListener(this); g2.addItemListener(this); g3.addItemListener(this); h1.addItemListener(this); h2.addItemListener(this); h3.addItemListener(this); h4.addItemListener(this); add(l1); add(g1); add(g2); add(g3); add(l2); add(h1); add(h2); add(h3); add(h4); add(answer); } public void itemStateChanged(ItemEvent e) { if (g1.getState())

str = g1.getLabel()+" 선택 "; else if (g2.getState())

str = g2.getLabel()+" 선택 "; else

str = g3.getLabel()+" 선택 "; answer.setText(str); }} // 끝

Page 23: AWT  프로그래밍

[CheckBoxTest.html] ___________________________________

<HTML><HEAD>

<TITLE> CheckBox Test </TITLE></HEAD><BODY>

<APPLET CODE=CheckBoxTest WIDTH=300 HEIGHT=200>

</APPLET></BODY>

</HTML>

______________________________________________________________

Page 24: AWT  프로그래밍

컴포넌트컴포넌트 ((ChoiceboxChoicebox))

Choice 클래스

List 와 유사한 컴포넌트

화면에 한 항목만 보여주고 나머지 항목들은 오른쪽 화살표를 선택하면 보여진다 .

한 항목만 선택이 가능하다 .

항목 클릭시 , ItemEvent 발생

Page 25: AWT  프로그래밍

컴포넌트컴포넌트 ((ChoiceboxChoicebox))Choice 클래스에 속한 메소드void add(String str) str 로 지정된 항목을 추가 throws NullPointerExceptionvoid addItem(String str) str 로 지정된 항목을 추가 throws NullPointerException void addItemListener(ItemListener il) 리스너를 등록String getIndex(int i) i 번째 항목을 반환int getSelectedIndex() 선택된 항목의 인덱스를 반환String getSelectedItem() 선택된 항목의 이름 ( 문자열 ) 을 반환void insert(String str, int i) str 로 지정된 항목을 i 번째 인덱스 위치에 추가 throws IllegalArgumentExceptionvoid remove(int i) I 번째 항목을 삭제 throws IllegalArgumentExceptionvoid removeAll() 모든 항목을 삭제void removeItemListener(ItemListener il) 등록된 리스너를 해제void select(int i) i 번째 항목을 선택 throws IllegalArgumentException void select(String str) str 로 지정된 항목을 선택 throws IllegalArgumentException

Page 26: AWT  프로그래밍

컴포넌트컴포넌트 ((ChoiceboxChoicebox))

Choice 객체를 만들어 이벤트 연결 및 출력하는 예

Choice attrib = new Choice();

attrib.add("Italic");

attrib.add("Bold");

attrib.add("Plain");

attrib.add("Italic+Bold");

attrib. addItemListener(this);

add(attrib);

Choice attrib = new Choice();

attrib.add("Italic");

attrib.add("Bold");

attrib.add("Plain");

attrib.add("Italic+Bold");

attrib. addItemListener(this);

add(attrib);

Page 27: AWT  프로그래밍

컴포넌트컴포넌트 ((ListList))List 클래스

Choicebox 와 매우 유사하나 여러 항목 선택이 가능하고

항상 선택항목이 보인다 . List 클래스 안에는 3 가지 종류의 생성자가 있음

List 의 한 항목을 클릭하면 ItemEvent 발생 , 더블 클릭하면 ActionEvent 가 발생

public List() { this(0, false); }

public List(int rows) { this(rows, false); }

public List(int rows, boolean multipleMode)

public List() { this(0, false); }

public List(int rows) { this(rows, false); }

public List(int rows, boolean multipleMode)

화면에 보이고자 하는 항목의 수 다중 선택 유무

Page 28: AWT  프로그래밍

컴포넌트컴포넌트 (( 리스트리스트 ))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 select(int i) i 번째 항목을 선택 throws IllegalArgumentExceptionvoid setMultipleMode(boolean flag) i 번다수개의 선택 항목을 위해서는 flag 를

true 로 설 정하고 , 그렇지 않으면 false 로 설정째 항목을 선택void add(String str) str 로 지정된 항목을 리스트 객체에 추가void add(String str, int i) str 로 지정된 항목을 리스트의 i 번째 위치에 추가void deselect(int i) i 번째 인덱스의 항목을 해제

Page 29: AWT  프로그래밍

컴포넌트컴포넌트 (( 리스트리스트 ))

예 ) 5 개의 항목을 갖는 리스트에서 4 개 항목만 보여지려면

List copyFile = new List(4, true);

copyFile.add("jni.ps");

copyFile.add("jdbc.ps");

copyFile.add("rmi.ps");

copyFile.add("innerclasses.ps");

copyFile.add("runtimeSystem.ps");

copyFile.addItemListener(this);

copyFile.addActionListener(this);

add(copyFile);

List copyFile = new List(4, true);

copyFile.add("jni.ps");

copyFile.add("jdbc.ps");

copyFile.add("rmi.ps");

copyFile.add("innerclasses.ps");

copyFile.add("runtimeSystem.ps");

copyFile.addItemListener(this);

copyFile.addActionListener(this);

add(copyFile);

Page 30: AWT  프로그래밍

해보기

Page 31: AWT  프로그래밍

[ 예제 ChoiceGandE.java]

import java.awt.*;import java.awt.event.*;import java.applet.*;

public class ChoiceGandE extends Applet implements ItemListener { List air; Choice city; String msg, msg2;

public void init() { air = new List(2, false); air.add(" 대한항공 "); air.add(" 아시아나 "); city = new Choice(); city.add(" 부산 "); city.add(" 제주 "); city.add(" 광주 "); city.add(" 대구 "); city.add(" 서울 "); // 계속

Page 32: AWT  프로그래밍

[ 예제 ChoiceGandE.java] 계속

air.addItemListener(this); city.addItemListener(this); add(air); add(city); }

public void itemStateChanged(ItemEvent ie) { msg = " 선택한 항공사 : "; msg += air.getSelectedItem(); msg2 = " 선택 지역 : "; msg2 += city.getSelectedItem(); repaint(); }

public void paint(Graphics g) { g.drawString(msg, 6, 120); g.drawString(msg2, 6, 140); }}

Page 33: AWT  프로그래밍

컴포넌트컴포넌트 ((TextComponentTextComponent))

TextComponent 클래스

TextField, TextArea 클래스의 상위클래스 TextField : 한 줄의 입력을 받을 때 TextArea : 여러 줄의 입력을 받을 때

TextComponent

TextField TextArea

Page 34: AWT  프로그래밍

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 를 반환

컴포넌트컴포넌트 ((TextComponentTextComponent))

Page 35: AWT  프로그래밍

컴포넌트컴포넌트 ((TextFieldTextField))

TextField 클래스한 줄의 입력을 받을 때

public TextField() { this("", 0); }

public TextField(String text) { this(text, text.length()); }

public TextField(String text, int columns)

public TextField() { this("", 0); }

public TextField(String text) { this(text, text.length()); }

public TextField(String text, int columns)

Page 36: AWT  프로그래밍

컴포넌트컴포넌트 ((TextAreaTextArea))TextArea 클래스여러 줄의 입력을 받을 때텍스트 필드보다 라인수와 스크롤 바에 대한 매개변수 추가

public TextArea() { this("", 0, 0, SCROLLBARS_BOTH); }

public TextArea(String text) { this(text, 0, 0, SCROLLBARS_BOTH); }

public TextArea(int rows, int columns) { this("", rows, columns); }

public TextArea(String text, int rows, int columns)

{ this(text, rows, columns, SCROLLBARS_BOTH); }

public TextArea(String text, int rows, int columns, int scrollbars)

public TextArea() { this("", 0, 0, SCROLLBARS_BOTH); }

public TextArea(String text) { this(text, 0, 0, SCROLLBARS_BOTH); }

public TextArea(int rows, int columns) { this("", rows, columns); }

public TextArea(String text, int rows, int columns)

{ this(text, rows, columns, SCROLLBARS_BOTH); }

public TextArea(String text, int rows, int columns, int scrollbars)

SCROLLBARS_BOTH, SCROLLBARS_HORIZONAL_ONLY, SCROLLBARS_VERTICAL_ONLY 중에서 선택하여 씀

Page 37: AWT  프로그래밍

컴포넌트컴포넌트 (TextArea)(TextArea)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)

Page 38: AWT  프로그래밍

해보기

Page 39: AWT  프로그래밍

[ 예제 – LabelTextTest.java] ________________________import java.applet.*;import java.awt.*;import java.awt.event.*;

public class LabelTextTest extends Applet implements ActionListener {TextField id;TextField pswd;TextArea ta;Button bt1, bt2;

public void init() {id = new TextField("ID 입력 ", 8); pswd = new TextField(8); ta = new TextArea(6, 60); bt1 = new Button("OK");

bt2 = new Button("CANCEL"); Label l1 = new Label("ID : "); Label l2 = new Label("PASSWORD : ");

bt1.addActionListener(this); bt2.addActionListener(this);

Page 40: AWT  프로그래밍

[ 예제 - LabelTextTest.java] 계속

add(l1); add(id); add(l2); add(pswd); pswd.setEchoChar('*'); add(ta); add(bt1); add(bt2);} // init() 끝

public void actionPerformed(ActionEvent e) { if ( e.getActionCommand().equals("OK") )

{ ta.setText("id : "); ta.append(id.getText() + "\n"); ta.append("password : ");

ta.append(pswd.getText()); } else { id.setText(""); pswd.setText(""); ta.setText(""); } }}

Page 41: AWT  프로그래밍

[ 예제 - LabelTextTest.html] ________________________________

<HTML><HEAD>

<TITLE> LabelTextTest </TITLE></HEAD><BODY>

<APPLET CODE=LabelTextTest WIDTH=360 HEIGHT=200>

</APPLET></BODY>

</HTML>____________________________________________________________

Page 42: AWT  프로그래밍

• orientation : 스 크 롤 바 의 방 향 을 지 정 하 는 상 수 로 HORIZONTAL 과 VERTICAL 이 사용• value : 스크롤의 초기 값 width : 스크롤 폭의 크기• min, max : 스크롤의 최소값과 최대값

컴포넌트컴포넌트 ((ScrollbarScrollbar))Scrollbar 클래스

스크롤바는 다른 컴포넌트와 같이 사용되기도 하지만 독자적으로도 사용될 수 있다.

Scrollbar()Scrollbar(int orientation)Scrollbar(int orientation, int value, int width, int min, int max)

Page 43: AWT  프로그래밍

컴포넌트컴포넌트 ((ScrollbarScrollbar))

관련 이벤트 : AdjustmentEvent

Scrollbar 클래스의 메소드

void addAdjustmentListener(AdjustmentListener al) Adjustment 리스너를 등록void removeAdjustmentListener(AdjustmentListener al) 등 록 된

Adjustment 리스너를 제거

int getValue() 스크롤 바의 값을 반환void setValue(int i) 스크롤 바의 값을 설정

Page 44: AWT  프로그래밍

예제

컴포넌트컴포넌트 ((ScrollbarScrollbar))

Page 45: AWT  프로그래밍

[ 예제 ScrollBarGandE.java]

import java.awt.*;import java.applet.*;import java.awt.event.*;

public class ScrollbarGandE extends Applet implements AdjustmentListener { Scrollbar rsb,gsb,bsb; Canvas canvas;

public void init() { Label r1 = new Label(" 빨강 " , Label.RIGHT); add(r1); rsb = new Scrollbar(Scrollbar.HORIZONTAL, 255, 5, 0, 255); // 스크롤바 객체 생성 rsb.addAdjustmentListener(this); // 생성된 객체에 리스너 등록 add(rsb); Label g1 = new Label(" 녹색 " , Label.RIGHT); add(g1); gsb = new Scrollbar(Scrollbar.HORIZONTAL, 0, 5, 0, 255); gsb.addAdjustmentListener(this); add(gsb); Label b1 = new Label(" 파랑 " , Label.RIGHT); add(b1);

Page 46: AWT  프로그래밍

[ 예제 ScrollBarGandE.java] 계속

bsb = new Scrollbar(Scrollbar.HORIZONTAL, 0, 5, 0, 255); bsb.addAdjustmentListener(this); add(bsb); canvas = new Canvas(); canvas.setSize(50,50); canvas.setBackground(new Color(255,0,0)); add(canvas); }

public void adjustmentValueChanged(AdjustmentEvent ae) {

// 스크롤바를 움직이면 이 메소드가 수행된다 int r = rsb.getValue(); int g = gsb.getValue(); int b = bsb.getValue(); Color color = new Color(r,g,b); canvas.setBackground(color); canvas.repaint(); }}