27
AWT 프프프프프 프프프프프프 프프프 프프 프프프 410 프 [email protected]

AWT 프로그래밍

  • Upload
    hao

  • View
    88

  • Download
    1

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 Applet 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  프로그래밍

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

클릭하면

Page 16: AWT  프로그래밍

예제 ButtonGandE.java

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

public class ButtonGandE extends Applet implements ActionListener { Label label; String msg = "";

public void init() { Button b1 = new Button(" 봄 "); b1.addActionListener(this); add(b1); Button b2 = new Button(" 여름 "); b2.addActionListener(this); add(b2); Button b3 = new Button(" 가을 "); b3.addActionListener(this); add(b3); Button b4 = new Button(" 겨울 "); b4.addActionListener(this); add(b4); label = new Label(" "); add(label); }

Page 17: AWT  프로그래밍

예제 ButtonGandE.java 계속

public void actionPerformed(ActionEvent ae) { label.setText(ae.getActionCommand()); repaint(); }

public void paint(Graphics g) { msg = " 계절버튼을 눌러주세요 "; g.drawString(msg,1, 22); }}

Page 18: AWT  프로그래밍

ButtonGandE.html

<html><head><title>Button 생성과 이벤트 처리 </title></head><body> <applet code="ButtonGandE" width=450 height=60> </applet></body></html>

Page 19: AWT  프로그래밍

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

Checkbox 클래스

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

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

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

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

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

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

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

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

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

Page 20: AWT  프로그래밍

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

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

Checkbox 클래스의 메소드

Page 21: 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 22: AWT  프로그래밍

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

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

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

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

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

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

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

Page 23: 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 24: AWT  프로그래밍

라디오버튼을 이용한 예제 해보기

Page 25: AWT  프로그래밍

[ 예제 라디오버튼 만들기 - CheckBoxTest.java] _________________________________________ import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class CheckBoxTest extends Applet implements ItemListener { Checkbox chk1, chk2, chk3, chk4; String str; public void init() {

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

chk2 = new Checkbox(" 콜라 ", cbg, false); chk3 = new Checkbox(" 오렌지쥬스 ", cbg, false); chk4 = new Checkbox(" 녹차 ", cbg, false); chk1.addItemListener(this); chk2.addItemListener(this); chk3.addItemListener(this);

chk4.addItemListener(this); add(chk1); add(chk2); add(chk3); add(chk4); } ____________________________________________________________________

Page 26: AWT  프로그래밍

[ 예제 라디오버튼 만들기 ] ( 계속 ) ____________________________________

public void itemStateChanged(ItemEvent e) {if(chk1.getState())

str = chk1.getLabel();else if(chk2.getState())

str = chk2.getLabel(); else if(chk3.getState())

str = chk3.getLabel(); else if(chk4.getState())

str = chk4.getLabel(); else str = “ “잘 못 ;

str += “ 선택되었습니다 .”; repaint();

}

public void paint(Graphics g) {g.drawString(str, 20, 80);

}}_______________________________________________________________

Page 27: AWT  프로그래밍

[CheckBoxTest.html] ___________________________________

<HTML><HEAD>

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

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

</APPLET></BODY>

</HTML>

______________________________________________________________