9장 AWT(1).

Slides:



Advertisements
Similar presentations
6 장 객체 - 지향 설계 ③. 목차 GUI 레이아웃  전화기 키 패드 전화기 키 패드 전화기 키 패드 모양의 GUI 를 만드는 Telephone.java, TelephonePanel.java 를 완성해 보자.  주석을 참고하여 TelephonePanel.java.
Advertisements

제 8 장 그래픽 사용자 인터페이스 어서와 Java 는 처음이지 !. 그래픽 사용자 인터페이스 (Graphical User Interface, 간단히 GUI) 는 컴포넌트들로 구성된다.
자바 5.0 프로그래밍.
명품 JAVA Essential.
- 계산기 GUI 구성하기 - 조원: 박강국 오정은 이귀식 김도윤 안영진.
그래픽 프로그래밍 (GUI - Graphic User Interface)
Ch.22 Command Pattern 장 덕 성 계명대학교 컴퓨터공학과 정보공학실험실
9장. 스윙 프로그래밍.
10장. 이벤트 처리와 그래픽 프로그래밍.
Java AWT Computer Programming Distributed Computing System Laboratory
GUI 이벤트, 이벤트 리스너와 이벤트 소스 그림 그리기 내부 클래스
제7장 이벤트 프로그래밍.
명품 JAVA Essential.
Chap13 이벤트 처리 13.1 : 이벤트란? 13.2 : 자바의 이벤트 모델 13.3 : 이벤트 관련 컴포넌트
7장 배열 ③.
레이아웃 관리자 스윙 구성요소 비트박스 프로그램
명품 JAVA Programming 제 13 장 스레드와 멀티태스킹.
컴퓨터 프로그래밍 실습 #7 제 4 장 GUI 클래스 작성.
GUI 환경에서 작동하는 프로그램에 대하여 윈도우 프로그램의 작성 방법 그래픽과 이미지 디스플레이 방법 오디오 파일 재생 방법
명품 JAVA Essential.
J2ME(Java 2 Micro Edition) 무선 장치용 UI의 핵심 컴포넌트
명품 JAVA Programming.
Chap14 스윙(SWING) 14.1 스윙 컴포넌트 14.2 컴포넌트의 이벤트 처리
Kim heesang JDBC Programming 2 Kim heesang
제 4 장 클래스 작성 Lab 4- 2.
DB와 WEB 연동(1) [2-Tier] Java Applet 이용
Lesson 12. 사용자 인터페이스(AWT) - 1
Lesson 11. 이벤트.
2. 자바 애플릿.
Power Java 제4장 자바 프로그래밍 기초.
Power Java 제19장 배치 관리자(Layout Manager).
명품 JAVA Programming 제 12 장 그래픽.
어서와 Java는 처음이지! 제8장 그래픽 사용자 인터페이스.
Choi Younghwan CSE HUFS
java.awt 패키지의 단순 컴포넌트와 이벤트 처리
Chapter 12. Awt와 Swing Chapter 13. 배치 관리자 Chapter 14. 이벤트 관리자
Java로 배우는 디자인패턴 입문 Chapter 22. Command 명령을 클래스로 만든다
Swing 컴포넌트 텍스트 컴포넌트 텍스트 필드 텍스트 영역 스크롤 페인 체크 박스 라디오 버튼.
이벤트 프로그래밍 안혜선.
목 차 1. swing component 특징 및 관련 packages
Java Seminar Chapter 4.
9장 다형성 Lab 9-2.
10장 예외 Lab 10-2.
5장 조건과 반복 ③.
프로그래머를 위한 Java 2 제4장 AWT 프로그래밍
명품 JAVA Essential.
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
메모장 구동.
9장 AWT(1).
GUI 프로그래밍과 AWT 컴퓨터 공학실험(I) 인공지능 연구실.
명품 JAVA Programming 제 15 장 애플릿과 멀티미디어.
JAVA WINDOW PROGRAMMING
주소록 프로그램.
제 9주 이벤트 처리 그래픽프로그래밍1 제 9주 강의 목표
4장 Random Number 프로그래밍 언어 실험실 석사 3학기 박중기
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
JAVA WINDOW PROGRAMMING
내부 클래스와 내부 인터페이스에 대하여 내부 클래스의 선언 방법과 이용 방법 내부 인터페이스의 선언 방법과 이용 방법
Mariadb JDBC PROGRAMMING2
제8장 쓰레드 프로그래밍.
제 4 장 클래스 작성 Lab 4- 2.
Outline 클래스의 해부 캡슐화(Encapsulation) 메쏘드의 해부 그래픽 객체(Graphical Objects)
GUI 프로그래밍과 AWT 컴퓨터 공학실험(I) 인공지능 연구실.
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
담당 : 황기태 교수님 학번 : ㈜ 이름 : 조성대 제출 :
Power Java 제16장 이벤트 처리.
5장 조건과 반복 ③.
Chapter2 : 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합개발환경(IDE)
Chapter8 : 인터페이스와 패키지 8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용
Presentation transcript:

9장 AWT(1)

AWT(1) AWT AWT 이벤트 처리 배치 관리자(Layout Manager)

AWT(1) AWT 자바 GUI 관련 패키지 버튼이나 라디오 버튼 같은 비주얼 컴포넌트와 컴포넌트의 배치, 이벤트 처리, 그래픽과 관련된 클래스 제공 AWT를 사용하면 각 플랫폼에 따라 다른 모양으로 출력되는 것을 볼 수 있는데 이것은 윈도우에 출력하는 부분을 AWT가 직접 담당하는 것이 아니라 플랫폼의 윈도우 모듈이 담당하고 AWT 객체를 플랫폼 윈도우 모듈의 요소와 맵핑 시켜주는 역할만은 담당하기 때문

AWT(1) 컴포넌트 추상 클래스인 Component 클래스를 상속하여 구현 비주얼 컴포넌트 컴포넌트 이름 기능 Label 고정 문자열을 표시한다. Button 버튼을 만들 때 사용한다. Checkbox 체크박스와 라디오버튼을 만들 때 사용한다. Choice 드롭-다운 리스트를 만들 때 사용한다. Canvas 빈 공간으로 아무것이나 그려 넣을 수 있다. List 리스트를 만들 때 사용한다. Scrollbar 스크롤바를 만들 때 사용한다. TextField 한 줄의 문자열을 입력받을 때 사용한다. TextArea 여러 줄의 문자열을 입력 받을 때 사용한다.

AWT(1) 비주얼 컴포넌트가 기본적으로 제공하는 메서드 사이즈 / 위치 관련 메서드 메서드 이름 기능 Dimension getSize() 컴포넌트의 사이즈를 반환한다. Point getLocation() 컴포넌트의 위치를 반환한다. Rectangle getBounds() 컴포넌트의 위치와 사이즈를 반환한다. void setSize(int width, int height) 컴포넌트의 사이즈를 지정한다. void setLocation(int x, int y) 컴포넌트의 위치를 지정한다. void setBounds(int x, int y,        int width, int height) 컴포넌트의 위치와 사이즈를 지정한다.

AWT(1) 색상 관련 메서드 폰트 관련 메서드 컴포넌트 동작 관련 메서드 전경색을 지정한다. 배경생을 지정한다. 메서드 이름 기능 void setForeground(Color c) 전경색을 지정한다. void setBackground(Color c) 배경생을 지정한다. 메서드 이름 기능 Font getFont() 컴포넌트의 폰트를 반환한다. void setFont(Font f) 컴포넌트의 폰트를 지정한다. 메서드 이름 기능 void setEnabled(boolean b) 컴포넌트를 활성화 / 비활성화 한다. void setVisible(boolean b) 컴포넌트를 화면서 보이게 / 보이지이 않게 한다.

AWT(1) 컨테이너 자신의 영역 안에 다른 컴포넌트를 포함할 수 있는 컴포넌트 Window, Frame, Panel, Applet, Dialog Frame 컨테이너 대부분의 애플리케이션에서 사용. Window의 하위 클래스로 윈도우 테두리, 메뉴바와 타이틀 등을 지원 Frame 클래스는 생성 후 화면이 바로 나타나지 않고, 기본 크기도 정해져 있지 않기 때문에 setSize()나 setBounds() 메서드를 호출해 크기를 지정해 주어야 하며, setVisible()메서드를 호출해 화면에 보이도록 해야 함 Panel 컨테이너 Panel 클래스는 컴포넌트를 그룹별로 모을 때 주로 사용. 이렇게 컴포넌트를 Panel에 모으면 관리가 용이하고 배치가 용이해짐 Applet 컨테이너 자바 애플릿의 가장 바깥쪽의 컨테이너 Dialog 컨테이너 메시지를 출력하거나 사용자로부터 입력을 받을 때 주로 사용되는 컨테이너

AWT(1) 예제 import java.awt.*; // AWT 컴포넌트를 사용하기위해 java.awt 패키지를 import 한다. public class AWTExam {     public static void main(String args[]) { // Panel 클래스 객체와 컴포넌트를 배치하기위한 Frame 클래스 객체를 생성한다.         Frame frm = new Frame(); // Frame 클래스의 setTitle() 메서드를 호출해 프레임의 타이틀바에 문자열을 출력한다.         frm.setTitle("프레임 테스트"); // Frame 클래스의 클래스의 setSize() 메서드를 호출해 프레임의 크기를 설정한다.         frm.setSize(400,200); // Frame 클래스의 setResizable() 메서드를 호출해 프레임의 크기를 변경할 수 없게 한다.         frm.setResizable(false);       // 컴포넌트를 배치하기위한 Panel 클래스 객체들을 생성한다.                    Panel pane01 = new Panel();         Panel pane02 = new Panel();         Panel pane03 = new Panel();         Panel pane04 = new Panel();         Panel pane05 = new Panel(); //Panel의 위치를 확인하기위해 Panel 클래스 객체의 setBackground() 메서드를 호출해 배경색을 설정한다.                 pane01.setBackground(Color.RED);         pane02.setBackground(Color.BLUE);         pane03.setBackground(Color.GREEN);         pane04.setBackground(Color.ORANGE);         pane05.setBackground(Color.GRAY);        

AWT(1) Label label = new Label("문자열 :"); // Label 클래스 객체를 생성한다.         TextField textField = new TextField(20); // 문자열을 입력받기위한 TextField 클래스 객체를 생성한다.         // Label 클래스 객체와 TextField 클래스 객체를 Panel 클래스 객체인 // pane01에 add() 메서드를 호출해 추가한다.   pane01.add(label);         pane01.add(textField); // Label 클래스 객체와 TextField 클래스 객체가 추가된 Panel 클래스 객체를 // Frame 클래스의 add() 메서드를 호출하여 프레임에 추가한다.         frm.add(pane01, "North");         // "체크박스 1번"을 레이블로 가지는 Checkbox 클래스 객체를 생성한다.         Checkbox chk01 = new Checkbox("체크박스 1번");         pane02.add(chk01);         frm.add(pane02,"West"); // 리스트 컴포넌트인 List 클래스 객체를 생성한다.         List list = new List(3); // List 클래스 객체의 add() 메서드를 호출하여 리스트 목록을 추가한다.         list.add("리스트1");         list.add("리스트2");         pane03.add(list);         frm.add(pane03,"East");   

AWT(1) 실행결과 // Button 클래스 객체를 생성한다 Button button01 = new Button("확인");         pane04.add(button01);    pane04.add(button02);         frm.add(pane04, "South");         // 여러 줄의 텍스트를 입력할 수 있는 TextArea 클래스 객체를 생성한다.         TextArea textArea = new TextArea(5,10);         pane05.add(textArea);         frm.add(pane05, "Center"); // Frame 클래스의 setVisible() 메서드를 호출하여 프레임과 프레임에 포함된 컴포넌트를 화면에 출력한다.         frm.setVisible(true);     } } 실행결과

AWT(1) AWT 이벤트의 종류 컴포넌트의 종류에 따라 다른 AWT의 이벤트를 발생 상위 이벤트 클래스와 하위 이벤트 클래스로 구분할 수 있는데 상위 이벤트 클래스는 같은 이벤트도 각 컴포넌트에서 다른 의미를 가질 수 있음 벤이벤트 클래스 설 설 명 상위 클래스 ActionEvent 컴포넌트가 활생화될 때 발생 AdjustmentEvent 스크롤 바와 같이 조정 가능한 컴포넌트에서 발생 ItemEvent 리스트 컴포넌트와 같이 선택항목이 존재하는 컴포넌트에서 발생 TextEvent 텍스트 컴포넌트에서 발생 하위 ComponentEvent 컴포넌트의 모양이나 크기가 변활 될 때 발생 ContainerEvent 컨테이너에 컴포넌트가 추가 / 삭제될 때 발생 FocusEvent 컴포넌트에 포커스가 들어왔을 때 발생 KeyEvent 키보드로부터 입력이 있을 때 발생 MouseEvent 마우스의 움직임에 의해 발생 MouseWheelEvent 마우스 휠의 움직임에 의해 발생 PaintEvent 컴포넌트가 그려져야 할 때 발생 WindowEvent 윈도우가 활성화 또는 닫힐 때 발생

이벤트 리스너의 종류 이벤트 클래스 리스너 인터페이스 설 명 ActionEvent ActionListener actionPerformed(ActionEvent) AdjustmentEvent AdjustmentListener adjustmentValueChanged(AdjustmentEvent) ItemEvent ItemListener itemStateChanged(ItemEvent) TextListener TextValueChanged(TextEvent) ComponentEvent ComponentListener componentHidden(ComponentEvent) componentShown(ComponentEvent) componentMoved(ComponentEvent) componentResized(ComponentEvent) ContainerEvent ContainerListener componentAdded(ContainerEvent) componentRemoved(ContainerEvent) FocusEvent FocusListener focusGained(FocusEvent) focusLost(FocusEvent) KeyEvent KeyListener keyPressed(KeyEvent) keyReleased(KeyEvent) keyTyped(KeyEvent) WindowEvent WindowListener windowOpned(WindowEvent) windowClosing(WindowEvent) windowClosed(WindowEvent) windowActivated(WindowEvent) windowDeactivated(WindowEvent) windowIconified(WindowEvent) windowDeiconified(WindowEvent) windowStateChanged(WindowEvent) windowGainedFocus(WindowEvent) windowLostFocus(WindowEvent) MouseEvent MouseListener mouseClicked(MouseEvent) mouseEntered(MouseEvent) mouseExited(MouseEvent) mousePressed(MouseEvent) mouseReleased(MouseEvent)

AWT(1) 예제 import java.awt.*; import java.awt.event.*; class MyActionListener implements ActionListener {       private TextField text = null;       public MyActionListener(TextField text) {               this.text = text;       }       public void actionPerformed(ActionEvent e) { // ActionEvent 클래스의 getActionCommand()를 호출하여 // 액션 이벤트가 발생한 컴포넌트의 이름을 구한다.               String cmd = e.getActionCommand(); .               text.setText(cmd + "버튼이 클릭되었습니다."); } public class EventListenerExam {     public static void main(String args[]) {         Frame frm = new Frame();         frm.setTitle(“이벤트 처리 예제");         frm.setSize(300,100);

AWT(1) Panel pane01 = new Panel(); Panel pane02 = new Panel();                 TextField text = new TextField(30);         text.setEditable(false);         pane01.add(text);         Button button01 = new Button(“확-인 ");         Button button02 = new Button("재-확-인 ");         pane02.add(button01);         pane02.add(button02);         frm.add(pane01, "Center");         frm.add(pane02, "South"); ActionListener listener = new MyActionListener(text); // 버튼의 액션 이벤트를 감지하여 도작하도록 Button 클래스의 // addActionListener() 메서드를 호출하여 컴포넌트에 이벤트 리스너를 등록한다         button01.addActionListener(listener);         button02.addActionListener(listener);         frm.setVisible(true);     } } AWT(1)

(예제) Swing API를 이용한 이미지 아이콘 추가하기 import javax.swing.*; ImageIcon korea1 = new ImageIcon("0.jpg"); JButton korea = new JButton("이미지", korea1); korea.addActionListener(listener);

AWT(1) 배치 관리자(Layout Manager) 자바는 기존 언어와 다르게 컴포넌트를 배치 관리자라는 것을 이용해 컴포넌트를 배치 절대 좌표로 보기 좋게 배치를 한다 해도 실제 화면에 출력을 해당 플랫폼의 윈도우 시스템이 하여 각 컴포넌트의 모양이나 크기가 달라지기 때문에 모양이 엉망이 되기 때문 컨테이너는 배치와 관련된 모든 작업을 배치 관리자에게 대행시키고 배치 관리자는 하위 윈도우 시스템에 가장 적합한 값으로 매핑시켜 화면에 보여주게 됨 BorderLayout, BoxLayout, CardLayout, DefaultMenuLayout, FlowLayout, GridBagLayout, GridLayout, OverlayLayout, ScrollPaneLayout, SpringLayout, ViewportLayout 등 다수 BorderLayout, BoxLayout, CardLayout, DefaultMenuLayout, FlowLayout, GridBagLayout, GridLayout, OverlayLayout, ScrollPaneLayout, SpringLayout, ViewportLayout

AWT(1) 배치 관리자의 종류 FlowLayout 배치 관리자 사용법 컴포넌트를 왼쪽에서 오른쪽, 위에서 아래쪽으로 순차적으로 배열하며 만약 한 줄에 모두 배치하지 못하면 다음 줄에 연속하여 배열 FlowLayout 배치 관리자는 컴포넌트의 지정한 크기를 무시하고, 각 컴포넌트에 필요한 최소 높이, 위치와 간격이 자동적으로 지정되어 배치 배치 관리자 사용법 배치 관리자 생성 컨테이너의 setLayout() 메서드로 컨테이너에 배치관리자를 설정 컴포넌트를 추가

AWT(1) import java.awt.*; public class FlowLayoutExam {     public static void main(String args[]) {         Frame frm = new Frame("FlowLayout 예제");         frm.setSize(200,100);         frm.setLayout(new FlowLayout());         frm.add(new Button("버튼 1번"));         frm.add(new Button("버튼 2번"));         frm.add(new Button("버튼 3번"));                 frm.setVisible(true);     } }

AWT(1) BorderLayout BorderLayout은 다음 그림과 같이 5개의 영역으로 구분해 컴포넌트를 배치 각 영역은 North, South, West, Center, East로 구분되면 add(Componet, String) 메서드로 컴포넌트를 추가

AWT(1) 예제 import java.awt.*; public class BorderLayoutExam {     public static void main(String args[]) {         Frame frm = new Frame("BorderLayout 예제");         frm.setSize(300,200); // 컨테이너인 BorderLayout 클래스 객체를 인자로 Frame 클래스의 // setLayout() 메서드를 호출하여 프레임의 배치관리자를 BorderLayout로 설정한다.         frm.setLayout(new BorderLayout());         frm.add(new Button("버튼 1번"), "North"); // 버튼 2번을 프레임의 좌측에 배치한다. 컴포넌트의 위치를 지정하는 문자열은 // BorderLayout 클래스의 정적 멤버 변수를 사용해서 지정할 수도 있다.         frm.add(new Button("버튼 2번"), BorderLayout.WEST);         frm.add(new Button("버튼 3번"), "East");         frm.add(new Button("버튼 4번"), "South");         frm.add(new Button("버튼 5번"), "Center");                 frm.setVisible(true);     } }

AWT(1) GridLayout 배치관리자 객체를 생성할 때 가로세로 셀의 크기를 지정하여 바둑판과 같이 일정한 크기로 컴포넌트를 배치 각 셀의 크기가 모두 동일하기 때문에 배치되는 컴포넌트의 크기는 무시되며, 좌측에서 우측으로 위에서 아래의 순서로 컴포넌트를 배치 import java.awt.*; public class GridLayoutExam {     public static void main(String args[]) {         Frame frm = new Frame("GridLayout 예제");         frm.setSize(300,200); // 가로 2칸, 세로 3칸의 GridLayout 클래스 객체를 생성해 배치관리자를 설정한다.         frm.setLayout(new GridLayout(3,2));         frm.add(new Button("버튼 1번"));         frm.add(new Button("버튼 2번"));         frm.add(new Button("버튼 3번"));         frm.add(new Button("버튼 4번"));         frm.add(new Button("버튼 5번"));                 frm.setVisible(true);     } }