16
This presentation is the property of its rightful owner.
Sponsored Links
1 / 85

16 장 . 스윙 PowerPoint PPT Presentation


  • 58 Views
  • Uploaded on
  • Presentation posted in: General

16 장 . 스윙. Java. public class SumTest { public static void main(String a1[]) { int a, b, sum; a = Integer.parseInt (a1[0]); b = Integer.parseInt (a1[1]); sum = a + b ; // 두 수를 더하는 부분입니다 System.out.println (" 두수의 합은 " + sum + " 입니다 "); } }.

Download Presentation

16 장 . 스윙

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


16

16장. 스윙

Java

public class SumTest {

public static void main(String a1[])

{

int a, b, sum;

a = Integer.parseInt(a1[0]);

b = Integer.parseInt(a1[1]);

sum = a + b ; // 두 수를 더하는 부분입니다

System.out.println("두수의 합은 " + sum + "입니다");

}

}


16

  • 학습목표


16

  • 목차

  • section 1 스윙 컴포넌트

    • 1-1 스윙(javax.swing) 패키지의 개요

    • 1-2 JComponent클래스

  • section 2 컴포넌트에서의 이벤트 처리

  • section 3 이미지 아이콘(ImageIcon)과 라벨(Label)

  • section 4 텍스트 필드와 텍스트 에리어

  • section 5 버튼


16

  • 목차

  • section 6 푸시 버튼

  • section 7 체크박스

  • section 8 라디오 버튼

  • section 9 콤보박스

  • section 10 리스트

  • section 11 스크롤 바

  • section 12 그룹 홀더

  • section 13 테이블

  • section 14 메뉴


16

1 스윙 컴포넌트

1-1 스윙(javax.swing) 패키지의 개요

  • 스윙(Swing)

    • 선(sun)사가 넷스케이프사와 공동으로 개발한 새로운 그래픽 툴킷(toolkit)

    • 그래픽을 JVM이 자체적으로 처리

    • 컴포넌트를 그리기 위해 실행 중인 컴퓨터에서 하나의 컴포넌트(예를 들면 프레임 윈도)만을 사용

    • 스윙과 관련된 모든 클래스들은 javax.swing패키지에 포함


16

1 스윙 컴포넌트

1-1 스윙(javax.swing) 패키지의 개요

  • 스윙 패키지의 주요 클래스와 상속관계

525 page


16

1 스윙 컴포넌트

1-1 스윙(javax.swing) 패키지의 개요

  • 스윙 패키지 주요 클래스의 기능


16

1 스윙 컴포넌트

1-1 스윙(javax.swing) 패키지의 개요

  • 스윙 패키지 주요 클래스의 기능


16

1 스윙 컴포넌트

1-2 JComponent클래스

  • Jcomponent클래스

    • AWT 패키지의 Component 클래스와 Container 클래스의 하위 클래스

    • 상위 클래스에서 제공되는 기본적인 기능(메소드)들을 그대로 상속받아 사용할 수 있다는 의미


16

1 스윙 컴포넌트

1-2 JComponent클래스

  • JComponent클래스의 상위 클래스와 하위 클래스

527 page


16

1 스윙 컴포넌트

1-2 JComponent클래스

  • JComponent클래스의 메소드


16

2 컴포넌트에서의 이벤트 처리

1-2 JComponent클래스

  • 받아들일 이벤트와 연관된 인터페이스를 사용하여 클래스 생성

  • GUI 구축을 위한 컴포넌트 객체를 생성 ƒ

  • 이벤트를 받아들인 컴포넌트 객체(여기서는 버튼 객체)에 리스너를 등록 ƒ


16

2 컴포넌트에서의 이벤트 처리

1-2 JComponent클래스

  • add() 메소드를 사용하여 컴포넌트를 패널(또는 프레임)에 추가 ƒ

  • 이벤트를 처리할 이벤트 처리 루틴 작성(예 : action 이벤트)


16

2 컴포넌트에서의 이벤트 처리

1-2 JComponent클래스

  • 실습예제

사용자 인터페이스

컴포넌트 생성

컨테이너 객체에 레이아웃 설정 (FlowLayout)

이벤트 처리 결과를 저장할 JLabel객체 생성

프레임과 연관된 컨테이너 객체 생성

버튼(male) 객체에 이벤트 리스너를 등록

버튼(female) 객체에 이벤트 리스너를 등록

이벤트 패키지 포함

ActionListener인터페이스 포함

컴포넌트를 컨테이너에 추가


16

2 컴포넌트에서의 이벤트 처리

1-2 JComponent클래스

  • 실습예제

버튼의 이름을

읽어 라벨로 출력

이벤트 처리 루틴 작성


16

2 컴포넌트에서의 이벤트 처리

1-2 JComponent클래스

  • 프로그램 설명

    • 03 : 이벤트 처리를 하는 프로그램을 작성하기 위해 java.event.* 패키지를 포함하였다.

    • 04 : GUI 구축을 위해 JFrame클래스로부터 상속받아 클래스를 작성하였으며, 또한 이벤트를 처리하기 위해 ActionListener인터페이스를 포함하여 클래스를 작성하였다. 사용자는 컴포넌트에서 처리할 이벤트의 종류가 어떤 것인지를 판단하여 포함할 인터페이스를 결정하여야 한다.

    • 05 : JLabel객체를 생성하였다. 이 클래스에 관해서는 다음 절에서 설명한다. 이 클래스는 문자열을 나타내기 위한 객체이다. 여기서는 버튼을 누르면 그 결과를 나타내기 위해 사용한다. 메소드 밖에 private으로 선언하였다.

    • 07~09 : GUI에서 필요한 컴포넌트 객체를 생성하였다. 두 개의 버튼 객체와 한 개의 라벨 객체를 생성하였다.

    • 10 : 생성한 프레임과 연관된 컨테이너 객체를 생성하였다.

    • 11 : 컨테이너에 컴포넌트를 배치할 때 사용할 배치관리자를 FlowLayout으로 설정하였다.

    • 12~15 : 컨테이너에 컴포넌트를 추가하였다.


16

2 컴포넌트에서의 이벤트 처리

1-2 JComponent클래스

  • 프로그램 설명

    • 16~17 : 두 개의 버튼에 이벤트 리스너를 등록하였다. 이벤트 리스너를 등록한다는 의미는 해당 컴포넌트에서 등록한 이벤트가 발생하면 그것을 이벤트 처리 루틴에 보내어 처리한다는 의미이다. 자바 프로그램에서 컴포넌트에서 발생된 이벤트를 처리하기 위해서는 반드시 컴포넌트에 관련 이벤트 리스너를 등록하여야 한다.

    • 23 :  ActionListener인터페이스에는  actionPerformed(ActionEventae) 메소드가 선언되어 있다. 이 메소드를 오버라이딩하여 이벤트 처리 루틴을 작성한다. 이 메소드는 ActionEvent클래스의 객체를 매개변수로 받아들이고 있다. 즉 JVM은 이벤트 리스너가 등록된 컴포넌트에써 이벤트가 발생하면, 관련 클래스로부터 객체를 생성하여 이벤트 처리 루틴에게 넘겨주게 된다. 이벤트 처리 루틴은 매개변수로 받은 이벤트 객체 정보를 이용하여 이벤트를 처리한다.

    • 24 : getActionCommand() 메소드는 이벤트가 발생한 컴포넌트가 가진 레이블(버튼의 이름)을 반환하는 메소드이다. 반환된 이름을 출력할 객체의 내용으로 설정하고 있다.   


16

2 컴포넌트에서의 이벤트 처리

1-2 JComponent클래스


3 imageicon label

3 이미지 아이콘(ImageIcon)과 라벨(Label)

  • ImageIcon클래스

    • 이미지를 아이콘화하여 제공하는 클래스

  • ImageIcon클래스 생성자

ImageIcon(String filname)

ImageIcon(URL url)

형식


3 imageicon label1

3 이미지 아이콘(ImageIcon)과 라벨(Label)

  • ImageIcon클래스의 메소드


3 imageicon label2

3 이미지 아이콘(ImageIcon)과 라벨(Label)

  • JLabel클래스 생성자

  • JLabel클래스의 메소드

JLabel(Icon i)

JLabel(String s)

JLabel(String s, Icon i, int align)

형식


3 imageicon label3

3 이미지 아이콘(ImageIcon)과 라벨(Label)

  • 실습예제

ActionListener인터페이스 포함

국기의 사진을 이용하여 ImageIcon객체 생성

ImageIcon객체를 이용하여

버튼 객체 생성

버튼(korea) 객체에

이벤트 리스너를 등록


3 imageicon label4

3 이미지 아이콘(ImageIcon)과 라벨(Label)

  • 실습예제

문자열을 이벤트의 결과로

(JLabel객체) 출력


3 imageicon label5

3 이미지 아이콘(ImageIcon)과 라벨(Label)

  • 프로그램 설명

    • 07 : 이 프로그램은 앞 절의 전형적인 이벤트 처리 프로그램과 동일한 형태이다. 다만 국기의 사진을 이용하여 ImageIcon객체를 생성한 다음, 그 객체를 이용하여 버튼 객체를 생성하였다. 다른 부분은 앞 절의 프로그램 설명 부분을 참조하기 바란다.


16

4 텍스트 필드와 텍스트 에리어

  • JTextField, JTextArea클래스 생성자

JTextField()

JTextField(int cols)

JTextField(Sting str, int cols)

JTextField(Sting str)

JTextArea()

JTextArea(String str)

JTextArea(int rows, int cols)

JTextArea(String str, int rows, int cols)

형식


16

4 텍스트 필드와 텍스트 에리어

  • 실습예제

두 개의 텍스트 객체 선언

20개의 문자를 저장할 JTextField객체 생성

20개의 문자 7줄을 저장할 JTextArea객체 생성

텍스트 필드 객체에 이벤트 리스너 등록


16

4 텍스트 필드와 텍스트 에리어

  • 실습예제

텍스트 에리어에 문자열을

추가(append())

텍스트 필드를 clear


16

4 텍스트 필드와 텍스트 에리어

  • 프로그램 설명

    • 06~16 : 두 개의 텍스트 관련 객체를 선언하였다. 이벤트 처리 루틴에서도 사용하기 때문에 메소드 외부에 private로 선언하였다.

    • 08 : 20개의 문자를 저장할 수 있는 JTextField객체를 생성하였다.

    • 09 : 20개의 문자를 7줄로 나타낼 수 있는 JTextArea객체를 생성하였다.

    • 14 : 텍스트 필드에 입력한 내용을 텍스트 에리어에 나타내기 위해서는 텍스트 필드 이벤트 리스너를 등록해야 한다. 

    • 21 : 이벤트 처리 루틴에서 텍스트 필드에서 가져온 문자열을 텍스트 에리어에 첨가한다. append() 메소드는 현재 텍스트 에리어에 추가하는 메소드이다.

    • 22 : 텍스트 필드의 내용을 clear 한다.


16

4 텍스트 필드와 텍스트 에리어


16

5 버튼

  • AbstractButton클래스의 주요 메소드


16

6 푸시 버튼

  • JButton클래스 생성자

JButton(Icon i)

JButton(String s)

JButton(String s, Icon i)

형식


16

6 푸시 버튼

  • 실습예제

3개의 국기를 가지고 ImageIcon객체 생성

한국의 국기를 가지고 JButton객체 생성

버튼이 눌러졌을 때 나타낼 이미지 아이콘 설정

마우스가 지나갈 때(rollover) 나타낼 이미지 아이콘 설정


16

6 푸시 버튼

  • 실습예제


16

6 푸시 버튼

  • 프로그램 설명

    • 06~08 : 3개의 국기를 가지고 ImageIcon객체를 생성하였다. 

    • 10~11 : 버튼이 눌러졌을 때, 버튼이 지나갈 때를 지정하는 메소드를 사용하여 아이콘을 설정하였다. 이 프로그램은 이벤트 처리 루틴이 없지만, AbstractButton클래스의 메소드를 이용하여 이벤트를 처리한 효과를 나타내고 있다.


16

6 푸시 버튼

  • 실습예제

5개의 과일 사진으로

ImageIcon객체 생성

5개의 ImageIcon객체를 

사용하여 버튼 객체 생성


16

6 푸시 버튼

  • 실습예제

각 버튼에 이벤트 리스너 등록

각 버튼이 가진 라벨을 텍스트 필드의

내용으로 설정


16

6 푸시 버튼

  • 프로그램 설명

    • 08~17 : 5개의 과일 사진으로 ImageIcon객체를 생성하고, 생성된 ImageIcon객체로 버튼 객체를 생성하였다.

    • 26~30 : 생성된 각 버튼에 이벤트 리스너를 등록하였다.

    • 37 : 이벤트 처리 루틴에서 이벤트를 발생한 객체가 가진 문자열을(버튼의 이름) 텍스트 필드의 내용으로 나타내었다.


16

7 체크박스

  • JCheckBox클래스 생성자

  • JCheckBox클래스의 메소드

JCheckBox(Icon i)

JCheckBox(Icon i, boolean state)

JCheckBox(String s)

JCheckBox(String s, boolean state)

JCheckBox(String s, Icon i)

JCheckBox(String s, Icon i, boolean state)

형식


16

7 체크박스

  • 실습예제

체크박스의 이벤트 처리를 위해

ItemListener포함


16

7 체크박스

  • 실습예제

이벤트를 발생시킨 객체의 이름을 출력


16

7 체크박스

  • 프로그램 설명

    • 05 : 이 프로그램에서는 체크박스 컴포넌트를 사용하여 이벤트를 처리하고 있다. 체크박스 컴포넌트의 이벤트를 처리하기 위해서는 ItemListener인터페이스를 포함해야 한다. 각 컴포넌트에서 발생 가능한 이벤트와 이벤트 처리를 위한 인터페이스의 선정 방법은 15장에서 설명하였다. 

    • 29 : getItem() 메소드는 이벤트를 발생시킨 객체를 Object형으로 반환한다. Object형의 객체는 하위 클래스의 어떠한 형으로도 형변환이 가능하다. 여기서는 Object형의 객체를 JCheckBox형으로 형변환하였다. getText() 메소드(AbstractButton클래스 메소드)는 해당하는 객체의 문자열을 반환하는 메소드이다. 반환된 문자열을 텍스트 필드에 출력하고 있다. 


16

7 체크박스


16

8 라디오 버튼

  • JRadioButton클래스 생성자

  • ButtonGroup클래스 생성자

  • ButtonGroup클래스 메소드

JRadioButton(Icon i)

JRadioButton(Icon i, boolean state)

JRadioButton(String s)

JRadioButton(String s, boolean state)

JRadioButton(String s, Icon i)

JRadioButton(String s, Icon i, boolean state)

ButtonGroup()

형식

형식


16

8 라디오 버튼

  • 실습예제

JRadioButton

클래스 객체 생성

버튼 그룹 객체 생성


16

8 라디오 버튼

  • 실습예제

각 라디오 버튼을 

하나의 그룹으로 만듦

각 버튼에 이벤트

리스너 등록


16

8 라디오 버튼

  • 실습예제


16

8 라디오 버튼

  • 프로그램 설명

    • 08~11 : JRadioButton클래스로부터 4개의 객체를 생성한다.

    • 14 : 버튼을 하나의 그룹으로 만들기 위한 ButtonGroup객체를 생성한다.

    • 15~18 : 버튼 그룹 객체를 이용하여 각각의 라디오 버튼을 하나의 그룹으로 만든다.


16

9 콤보박스

  • JComboBox클래스 생성자

  • ComboBox클래스 메소드

JComboBox()

JComboBox(Vector v)

형식


16

9 콤보박스

  • 실습예제

이벤트 처리를 위해 

ItemListener포함

이미지를 이용하여 JLabel객체 생성

JComboBox객체 생성

컨터이너에JLabel객체 추가

콤보박스 객체에 아이템 추가


16

9 콤보박스

  • 실습예제

컨테이너에 콤보박스 추가

문자열과 연관된 이미지를 이용하여

JLabel객체 설정

콤보박스에 이벤트 리스너 등록

getItem() 메소드를 이용하여 문자열 생성


16

9 콤보박스

  • 프로그램 설명

    • 04 : ComboBox컴포넌트에서 발생되는 이벤트를 처리하기 위해 ItemListener를 포함하였다.

    • 07 : 이미지 파일을 이용하여 ImageIcon객체를 생성한 다음, 그 객체를 이용하여 Jlabel객체를 생성하였다. 

    • 08 : JComboBox클래스로부터 객체를 생성하였다. 

    • 12~17 : 콤보박스 객체에 아이템을 추가하였다. 추가된 아이템은 문자열 객체이다. 

    • 18 : 컨테이너에 콤보박스 객체를 추가하였다. 콤보박스는6개의 아이템을 가지고 있다.

    • 19 : 콤보박스에서 발생하는 이벤트를 처리하기 위해 이벤트 리스너를콤보박스 객체에 등록하였다. 

    • 26 : ItemEvent클래스의 getItem() 메소드를 이용하여 사용자에 의해 선택된 아이템의 문자열을 가져온다. 15장의 ItemEvent클래스 부분을 참조하기 바란다. 

    • 27 : 문자열을 이용하여 ImageIcon객체를 생성한 다음, JLabel객체의 값으로 설정하여 나타낸다.


16

9 콤보박스


16

10 리스트

  • JList클래스 생성자

  • JList클래스의 주요 메소드

JList()

JList(Object[] items)

형식


16

10 리스트

  • 실습예제

6개의 과일 사진을 이용하여 

ImageIcon객체  배열  생성, 

이벤트 처리 루틴에서는 선택

된 항목의 인덱스를 사용하여 

이미지를 나타냄

ListSelectionListener

인터페이스 포함

javax.swing.event.* 패키지 포함

JLabel객체 배열 선언

JList객체 생성


16

10 리스트

  • 실습예제

패널 객체 생성

패널에 JLabel객체 배열의 

모든 항목 추가

JList에 이벤트 리스너 등록

컨테이너에 JList와 패널 추가


16

10 리스트

  • 실습예제

모든 아이콘을 null 값으로 초기화

선택된 항목의 인덱스를 정수 배열로 생성

선택된 항목의 인덱스에

해당하는 이미지를 나타냄


16

10 리스트

  • 프로그램 설명

    • 03 : ListSelectionListener인터페이스와 ListSelectionEvent클래스를 사용하기 위해서는 javax.swing.event.* 패키지에 포함시켜야 한다. 이 두 개의 인터페이스와 클래스는 이 패키지에 선언되어 있기 때문이다. 

    • 04 : JList에서 발생하는 이벤트를 처리하기 위해서는 ListSelectionListener인터페이스를 포함시켜야 한다. 

    • 06 : 문자열 배열을 이용하여 JList객체를 생성하였다.

    • 07 : ImageIcon객체 배열 생성

    • 15 : 6개의 요소(각각이 JLabel객체)를 가지는 JLabel객체의 배열을 선언하였다.

    • 17 : 선택된 과일 그림을 나타낼 패널 객체를 생성하였다.

    • 18 : 패널에 레이아웃을 3행 2열로 설정하였다.

    • 20 : 반복문을 통하여 6개의 JLabel객체를 패널에 추가하였다. 지금 상태는 JLabel객체가 아무 값도 가지고 있지 않다. 이벤트 처리 루틴에서 JLabel객체에 이미지를 나타내는 setIcon() 메소드를 이용하여 선택된 과일 그림만 나타낼 것이다. 

    • 23~24 : 컨테이너에 JList와 패널을 왼쪽과 가운데에 추가하였다.


16

10 리스트

  • 프로그램 설명

    • 25 : JList객체에 이벤트 리스너(ListSelectionListener)를 등록하였다.

    • 31 : 이벤트 처리 루틴으로 ListSelectionListener인터페이스에 선언된 valueChanged(List­SelectionEventlse) 메소드를오버라이딩하였다. 일반적으로 이벤트 처리 루틴에서는 매개변수로 받은 객체의 메소드를 이용하여 이벤트를 처리하는데, 이 프로그램의 매개변수로 받은 ListSelectionEvent객체를 사용하지 않는다.

    • 33 : 모든 아이콘을 null 값으로 초기화시킨다. 즉 사용자가 이 프로그램을 계속 작동시키면, 이벤트가 발생할 때마다 선택된 부분을 나타내기 위해서는 전에 나타낸 그림을 초기화시켜야 한다.

    • 35 : getSelectedIndices() 메소드는JList클래스에 선언된 메소드이다. 이 메소드는 선택된 항목의 인덱스를 정수 배열로 반환하는 메소드이다. 즉 사용자에 의해 선택된 모든 항목의 인덱스가 정수 배열로 반환되게 된다. 

    • 37 : 선택된 항목의 인덱스에 해당하는 이미지를 나타낸다. 예를 들어 현재 2개의 항목이 선택되었다면, 선택된 항목의 이미지 아이콘이 JLabel[0], JLabel[1]에 설정되어 나타나게 된다. 


16

10 리스트


16

11 스크롤 바

  • JScrollPane클래스 생성자

  • vsb와 hsb는 수직, 수평 스크롤 바를 설정하기 위해 사용되는 상수로서 다음과 같은 상수가 사용됨

    • HORIZONTAL_SCROLLBAR_ALWAYS : 항상 수평 스크롤 바를 제공

    • HORIZONTAL_SCROLLBAR_AS_NEEDED : 필요한 경우(패널의 크기를 넘어서는 경우)에만 수평 스크롤 바 제공

    • VERTICAL_SCROLLBAR_ALWAYS : 항상 수직 스크롤 바를 제공

    • VERTICAL_SCROLLBARAS_NEEDED : 필요한 경우에만 수직 스크롤 바 제공

JScrollPane(Component comp)

JScrollPane(intvsb, inthsb)

JScrollPane(Component comp, intvsb, inthsb)

형식


16

11 스크롤 바

  • 실습예제

JPanel객체를 생성

JPanel객체를 생성

두 개의 반복문으로100개의

버튼 객체 생성


16

11 스크롤 바

  • 실습예제

객체 생성을 위한 상숫값 지정

JScrollPane객체를

생성(스크롤 바 포함)


16

11 스크롤 바

  • 프로그램 설명

    • 05 : JPanel객체를 생성하였다.

    • 06 : 생성된 패널 객체에 레이아웃으로 20행 5열로 배치하는 레이아웃을 설정하였다.

    • 11 : 두 개의 반복문을 사용하여 패널에 100개의 버튼 객체를 생성하여 추가하였다.

    • 15~18 : 객체 생성을 위한 상숫값을 지정하였다. 객체가 패널의 크기보다 크면 자동적으로 스크롤 바가 나타나도록 설정하였다. 

    • 19 : JScrollPane객체를 생성하였다.


16

11 스크롤 바


16

12 그룹 홀더

  • JTabbedPane클래스 생성자

  • 그룹 홀더메소드

  • 그룹 홀더를 사용하기 위한 일반적인 과정

    • JTabbedPane클래스를 이용하여 그룹 홀더 객체를 생성

    • 그룹 홀더에 추가할 각각의 홀더 객체를 JPanel클래스를 이용하여 작성

    • 생성된 JPanel객체를 JTabbedPane객체에 추가(addTab() 메소드 이용)

    • 모든 홀더가 완성될 때까지 1-3번을 반복

    • 완성된 그룹 홀더를 프레임에 추가

JTabbedPane()

형식


16

12 그룹 홀더

  • 실습예제

이벤트 처리를 위해 리스너 포함

이벤트 처리 루틴

컴포넌트에 이벤트 리스너 등록


16

12 그룹 홀더

  • 실습예제

이벤트 처리를 위해 리스너 포함


16

12 그룹 홀더

  • 실습예제

이벤트 처리 루틴

성별 패널을 JTabbedPane객체에 추가

JTabbedPane객체 생성

혈액형 패널을 JTabbedPane객체에 추가

JTabbedPane객체를 컨테이너에 추가


16

12 그룹 홀더

  • 프로그램 설명

    • 04-40 : 두 개의 패널 객체를 생성하였다. 패널에서 처리할 이벤트 리스너를 포함하여 작성하였으며, 각각의 패널에서 이벤트 처리 루틴을 작성하였다.

    • 43 : JTabbedPane객체를 생성하였다.

    • 46~47 : addTab() 메소드를 이용하여 두 개의 패널 객체를 JTabbedPane객체에 추가하였다. 

    • 48 : JTabbedPane객체를 프레임의 컨테이너 객체에 추가하였다.


16

12 그룹 홀더


16

13 테이블

  • JTable클래스 생성자

  • 테이블을 사용하기 위한 절차

    • JTable객체를 생성

    • 생성된 JTable객체를 이용하여 JScrollPane객체를 생성

    • 프레임의 컨테이너에 JScrollPane객체를 추가

JTable(Object data[][], Object colHeads[])

형식


16

13 테이블

  • 실습예제

테이블의 헤더를 작성

테이블의 내용을 작성


16

13 테이블

  • 실습예제

헤더와 내용으로 JTable객체 생성

JTable객체를 이용하여 JScrollPane객체를 생성

프레임의 컨테이너에 JScrollPane객체를 추가


16

13 테이블

  • 실습예제


16

13 테이블

  • 프로그램 설명

    • 07 : 테이블의 헤더를 작성하기 위해 문자열의 배열을 생성한다.

    • 08 : 테이블의 내용을 작성하기 위해 Object 클래스의 2차원 배열을 생성한다. Object 클래스의 내용으로는 어떤 형태의 객체도 삽입할 수 있다.

    • 23 : 헤더와 내용으로 JTable객체를 생성한다.

    • 28 : JTable객체를 이용하여 JScrollPane객체를 생성한다. 즉 테이블에 스크롤을 붙인 형태가 된다.

    • 29 : 프레임의 컨테이너에 JScrollPane객체를 추가시키면, 테이블에 컨테이너에 추가된 형태가 된다.


16

13 테이블


16

14 메뉴

  • 메뉴 관련 클래스

    • JMenuBar, JMenu, JMenuItem, JCheckBoxMenuItem, JradioButtonMenuItem등

  • 스윙의 메뉴의 작성 순서

    • JMenuBar객체를 생성

    • 메뉴바에 나타낼 JMenu객체를 생성

    • 각각의 메뉴에 매달리는 서브 메뉴를 JMenuItem객체로 생성하여 메뉴에 추가

    • 메뉴가 완성될 때까지 2-3번을 반복

    • 메뉴가 완성되면 모든 메뉴를 JMenuBar에 추가

    • setJMenuBar() 메소드를 이용하여 메뉴바를 프레임에 추가


16

14 메뉴

  • 실습예제

이벤트 처리를 위한 리스너 포함

이벤트 처리를 위한 리스너 포함

서브 메뉴를 위한 JMenuItem객체 생성

서브 메뉴에 리스너 등록

서브 메뉴를 메뉴에 추가

메뉴바에 메뉴 추가

각 메뉴 객체 생성


16

14 메뉴

  • 실습예제

서브 메뉴 작성 및 추가

메뉴바에 메뉴 추가

이벤트 처리를 위한 리스너 포함

메뉴를 프레임에 추가


16

14 메뉴

  • 실습예제

이벤트 결과를 나타낼 텍스트 박스 생성


16

14 메뉴

  • 프로그램 설명

    • 04 : 이벤트 처리하기 위해 ActionListener를 포함시켜 클래스를 작성한다.

    • 09 : JMenuBar클래스를 이용하여 메뉴바 객체를 생성한다.

    • 10~11 : 메뉴바에 나타낼 각 메뉴 객체를 JMenu클래스를 이용하여 생성한다.

    • 12~14 : 서브 메뉴를 위한 JMenuItem객체를 생성하고, 그 객체에서의 이벤트를 처리하기 위한 리스너를 등록한다. 생성된 메뉴 아이템 객체를 10­11에서 생성된 메뉴 객체에 추가한다. 위와 같은 부분이 메뉴가 완성될 때까지 반복된다.

    • 18 : 메뉴가 완성되면 메뉴바에 메뉴를 추가한다.

    • 36 : 다 작성된 메뉴바를 프레임에 추가한다. setJMenuBar() 메소드는JFrame클래스에서 제공되는 메소드이다. 프레임의 메뉴바를 나타낸다. 메뉴바는 메뉴를 가지고 있고, 메뉴는 메뉴 아이템을 가지고 있어, 모든 메뉴가 나타나게 된다.

    • 37 : 메뉴가 선택되었을 때(이벤트 발생) 그 메뉴를 나타낼 텍스트 박스를 생성하였다. 이벤트 처리 루틴에서 사용한다.


16

14 메뉴


16

  • 학습정리

  • 스윙(Swing) 컴포넌트

    • javax.swing패키지는 가장 상위 클래스로 JComponent클래스를 가진다. 그 의미는 JComponent클래스에 제공되는 모든 메소드를 사용할 수 있다는 의미이다.

    • JComponent클래스는 java.awt 패키지의 Component, Container 클래스를 상위 클래스로 가진다.

  • 컴포넌트에서의 이벤트 처리

    컴포넌트에서 전형적인 이벤트 처리는 다음과 같은 순서로 이루어진다.

    • 받아들일 이벤트와 연관된 인터페이스를 사용하여 클래스 생성

    • GUI 구축을 위한 컴포넌트 객체를 생성

    • 이벤트를 받아들인 컴포넌트 객체(여기서는 버튼 객체)에 리스너를 등록

    • add() 메소드를 사용하여 컴포넌트를 패널(또는 프레임)에 추가

    • 이벤트를 처리할 이벤트 처리 루틴 작성(예 : action 이벤트)


16

  • 학습정리

  • 스윙 컴포넌트의 사용과 이벤트 처리

    • 다양한 컴포넌트를 사용하여 사용자 인터페이스를 구축할 수 있다.

    • 대부분의 컴포넌트에서 이벤트 처리는 같은 형태로 처리된다.

    • 이벤트를 처리하기 위해서는 우선 컴포넌트에서 발생하는 이벤트가 어떤 종류가 있는지를 판별해야 하고, 그 종류의 이벤트를 처리하기 위해서 사용하는 이벤트 리스너를 선택해야 한다.

    • 이벤트를 처리할 클래스를 작성할 때에는 선별된 이벤트 리스너를 포함하여 작성하여야 하며, 리스너 인터페이스에서 선언된 모든 메소드를오버라이딩하여 이벤트 처리 루틴을 작성하여야 한다.


16

16장. 스윙

수고하셨습니다.

질문 있습니까?


  • Login