400 likes | 579 Views
자바 5.0 프로그래밍. chapter 14 : GUI. 학습목표. AWT ( Abstract Window Toolkit) AWT 계층구조 Container 특징 LayoutManager AWT 이벤트 이벤트 처리방법 Adapter. AWT. 정의. 자바의 GUI 및 이벤트처리를 담당하는 GUI 메커니즘을 의미. 작성방법. java.awt 패키지의 클래스 이용. OS 자원을 이용하여 GUI 를 보여준다 . 플랫폼에 종속적이다 ( weight ).
E N D
chapter 14 : GUI
학습목표 • AWT ( Abstract Window Toolkit) • AWT 계층구조 • Container 특징 • LayoutManager • AWT 이벤트 • 이벤트 처리방법 • Adapter
AWT • 정의 • 자바의 GUI 및 이벤트처리를 담당하는 GUI 메커니즘을 의미. • 작성방법 • java.awt 패키지의 클래스 이용. • OS자원을 이용하여 GUI를 보여준다. • 플랫폼에 종속적이다 ( weight ) • javax.swing 패키지의 클래스 이용. • 자체적인 GUI클래스로 보여준다. • 플랫폼에 독립적이다 ( light )
AWT • 계층구조
AWT • 구성요소 • 비주얼Component • Button , Checkbox , Label 등 • 반드시 Container을 통해서 보여진다. • Container • Window 계열 : 비주얼컴포넌트 및 Panel을 보여준다. - Frame - Dialog • Panel 계열 : - Applet - 독립적으로 작동하지 못하고 반드시 Window계열을 통해서 보여진다. • LayoutManager • BorderLayout , FlowLayout ,CardLayout , GridLayout 등 • 컴포넌트의 위치 및 크기 설정.
AWT • 실행화면
Container • Frame • 일반적인 응용프로그램에서 윈도우를 생성하기 위해 사용된다. • 기본적으로 타이틀, 최소버튼,최대버튼,종료버튼이 지원된다. • 상위클래스인 Window은 타이틀,메뉴가 지원되지 않는다. • 기본으로 화면에 안보이게 설정했기 때문에 반드시 f.setVisible( true)값으로 설정한다. • 화면크기는 setSize() , setBounds() 메소드를 사용한다. • 기본 LayoutManager은 BorderLayout 이다. • Panel • 컴포넌트들을 그룹별로 묶어서 처리할 때 사용한다. • 독립적으로 보여주지 않고 반드시 Frame을 통해서 보여진다. • 기본 LayoutManager은 FlowLayout 이다. • 주로 컴포넌트들의 화면배치문제로 인해 Panel을 자주 사용한다.
Component • 특징 • GUI화면을 구성하는 기본단위로서 각 컴포넌트들의 공통적인 메소드를 정의하고 있다. • 종류
LayoutManager ( 배치지시자 ) • 특징 • 컴포넌트들을 자동으로 배치하는 기능을 가진 객체를 LayoutManager라고 한다. • 컨테이너에 컴포넌트를 배치할 때의 위치와 크기가 정해져 있다. • 컨테이너는 기본적으로 하나의 LayoutManager를 갖는다. • 컨테이너 고유의 LayoutManager를 바꿀수 있다. • setLayout() 메소드 이용 • 종류 • BorderLayout • FlowLayout • CardLayout • GridLayout • GridBagLayout
BorderLayout • 특징 • Frame의 기본 배치관리자 이다. • 5개의 영역으로 구분되어 배치된다. • 기본은 Center 이다. • Center영역은 다른 영역이 지정되지 않으면 그 영역을 포함한다. • 컴포넌트 크기가변 , 위치불변 • 배치관리자 변경메소드 : f.setLayout( new FlowLayout());
BorderLayout • 예제
FlowLayout • 특징 • Panel 의 기본 배치관리자 이다. • 수평으로 순서대로 늘어놓는 형태의 배치관리자이다. • 컴포넌트 크기불변, 위치가변
FlowLayout • 예제
GridLayout • 특징 • 바둑판 형태의 배치관리자이다. • 생성시 행과열을 지정한다. • 컴포넌트 추가는 좌측에서 우측으로 , 위에서 아래로 추가된다.
GridLayout • 예제
AWT 이벤트 • 이벤트( Event ) • GUI 컴포넌트에서 발생되는 모든 행위를 지칭하는 용어. • - 버튼을 클릭하거나 윈도우 종료단추를 클릭하는 행동 • 이벤트 소스( Event Source) • Event 가 발생된 컴포넌트를 의미한다. • - 버튼을 클릭하면 이벤트가 발생이 됐으며 이벤트소스는 버튼이된다. • 이벤트 처리( Event Handling) • Event가 발생되었을 때 실제로 발생되는 동작을 의미한다. • - 윈도우 종료버튼을 클릭하면 창이 닫힌다. • 이벤트 리스너( Event Listener) • 컴포넌트에서 이벤트의 발생여부를 체크하고 실제적으로, 발생된 각 이벤트의 처리메소드를 정의하고 있는 프로세스를 의미. • 인터페이스로 선언.
interface JVM 이벤트발생 버튼클릭 이벤트핸들러 • AWT 이벤트 • 이벤트 처리자( Event Handler) • 이벤트 리스너에 전달된 이벤트를 실제로 구현작업을 담당하는 • 클래스를 의미한다. • 이벤트리스너를 implements 해서 구현한다. • 자바의 이벤트 처리방법 • GUI프로그램이 실행중에 OS가 이벤트가 발생이 되는지를 검사. • 이벤트가 발생되면 OS가 JVM에게 이벤트를 전달한다. • JVM은 발생된 이벤트를 처리하기 위하여 이벤트객체를 생성. • 생성된 이벤트객체를 이벤트리스너를 구현한 이벤트핸들러로 • 전달하여 이벤트 처리를 한다.
AWTEvent ActionEvent AdjustmentEvent ComponentEvent ItemEvent TextEvent ContainerEvent FocusEvent WindowEvent InputEvent PaintEvent KeyEvent MouseEvent • AWT 이벤트 • java.awt.event 패키지의 Event 계층구조
AWT 이벤트 • java.awt.event 패키지의 Event 내용
AWT 이벤트 • 컴포넌트별 발생이벤트 종류
AWT 이벤트 • ActionEvent • 버튼이 클릭되거나 리스트, 메뉴등이 선택되었을 때 발생한다. • 텍스트필드에서 엔터를 쳤을때도 발생한다.
AWT 이벤트 • ItemEvent • 체크박스, 리스트 , 초이스 컴포넌트에서 항목을 선택하거나 • 해제했을 경우 발생한다.
AWT 이벤트 • keyEvent • 키보드를 통해서 키 입력을 했을 경우에 발생한다.
AWT 이벤트 • MouseEvent • 마우스를 클릭하거나 포인터가 컴포넌트 영역에 들어오거나 • 벗어날 때 발생한다.
AWT 이벤트 • WindowEvent • 윈도우를 활성화 ,아이콘화 ,비활성화 작업시 발생한다.
AWT 이벤트 • 이벤트 리스너 종류
AWT 이벤트 • 이벤트 리스너 종류
AWT 이벤트 • 이벤트 처리 3단계 • 1 단계. • 이벤트소스를 결정한다. • 2 단계. • 이벤트리스너를 결정하고 리스너를 구현할 이벤트핸들러를 작성한다. 반드시 인터페이스를 구현한다. • 3 단계. • 이벤트소스와 이벤트리스너를 연결한다. • 연결방법은 addXXXListener() 메소드를 이용한다. ( XXXListener 은 인터페이스명 이다. ) • 이벤트 핸들러 위치에 따른 4가지 이벤트처리법 • GUI 와 이벤트핸들러가 같은 클래스로 처리. • GUI 와 이벤트핸들러가 다른 클래스로 처리. • GUI 와 이벤트핸들러가 내부클래스로 처리. • GUI 와 이벤트핸들러가 anonymous클래스로 처리.
이벤트 핸들러 위치에 따른 4가지 이벤트처리법 • 같은 클래스 처리
같은 클래스 처리 • 이벤트소스 분석에 의한 이벤트 처리 • getActionCommand() • getSource()
이벤트 핸들러 위치에 따른 4가지 이벤트처리법 • 다른 클래스 처리
이벤트 핸들러 위치에 따른 4가지 이벤트처리법 • 내부 클래스 처리
이벤트 핸들러 위치에 따른 4가지 이벤트처리법 • anonymous 클래스 처리
Adapter 클래스 • 정의 • 2개 이상의 추상메소드를 가진 Listener 인터페이스를 미리 구현한 클래스이다. • 용도 • Listener 인터페이스를 이용해서 이벤트처리를 하면 반드시 • 추상메소드를 구현해야 한다. • 필요하지 않는 메소드까지도 구현해야하는 불편함을 해소할 수 있다. • 방법 • Listener 인터페이스 대신 Adapter 클래스로 이벤트처리를 한다.
Adapter 클래스 • Listener 와 Adapter
Adapter 클래스 • 예제
요약 정리 • AWT 와 컴포넌트 • Frame • Panel • LayoutManager • 이벤트 처리 • 이벤트 처리 4가지 방법 • Adapter