16 장 . 스윙 - PowerPoint PPT Presentation

slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
16 장 . 스윙 PowerPoint Presentation
Download Presentation
16 장 . 스윙

play fullscreen
1 / 85
16 장 . 스윙
128 Views
Download Presentation
amanda-merrill
Download Presentation

16 장 . 스윙

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. 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 + "입니다"); } }

  2. 학습목표

  3. 목차 • section 1 스윙 컴포넌트 • 1-1 스윙(javax.swing) 패키지의 개요 • 1-2 JComponent클래스 • section 2 컴포넌트에서의 이벤트 처리 • section 3 이미지 아이콘(ImageIcon)과 라벨(Label) • section 4 텍스트 필드와 텍스트 에리어 • section 5 버튼

  4. 목차 • section 6 푸시 버튼 • section 7 체크박스 • section 8 라디오 버튼 • section 9 콤보박스 • section 10 리스트 • section 11 스크롤 바 • section 12 그룹 홀더 • section 13 테이블 • section 14 메뉴

  5. 1 스윙 컴포넌트 1-1 스윙(javax.swing) 패키지의 개요 • 스윙(Swing) • 선(sun)사가 넷스케이프사와 공동으로 개발한 새로운 그래픽 툴킷(toolkit) • 그래픽을 JVM이 자체적으로 처리 • 컴포넌트를 그리기 위해 실행 중인 컴퓨터에서 하나의 컴포넌트(예를 들면 프레임 윈도)만을 사용 • 스윙과 관련된 모든 클래스들은 javax.swing패키지에 포함

  6. 1 스윙 컴포넌트 1-1 스윙(javax.swing) 패키지의 개요 • 스윙 패키지의 주요 클래스와 상속관계 525 page

  7. 1 스윙 컴포넌트 1-1 스윙(javax.swing) 패키지의 개요 • 스윙 패키지 주요 클래스의 기능

  8. 1 스윙 컴포넌트 1-1 스윙(javax.swing) 패키지의 개요 • 스윙 패키지 주요 클래스의 기능

  9. 1 스윙 컴포넌트 1-2 JComponent클래스 • Jcomponent클래스 • AWT 패키지의 Component 클래스와 Container 클래스의 하위 클래스 • 상위 클래스에서 제공되는 기본적인 기능(메소드)들을 그대로 상속받아 사용할 수 있다는 의미

  10. 1 스윙 컴포넌트 1-2 JComponent클래스 • JComponent클래스의 상위 클래스와 하위 클래스 527 page

  11. 1 스윙 컴포넌트 1-2 JComponent클래스 • JComponent클래스의 메소드

  12. 2 컴포넌트에서의 이벤트 처리 1-2 JComponent클래스 • 받아들일 이벤트와 연관된 인터페이스를 사용하여 클래스 생성 • GUI 구축을 위한 컴포넌트 객체를 생성 ƒ • 이벤트를 받아들인 컴포넌트 객체(여기서는 버튼 객체)에 리스너를 등록 ƒ

  13. 2 컴포넌트에서의 이벤트 처리 1-2 JComponent클래스 • add() 메소드를 사용하여 컴포넌트를 패널(또는 프레임)에 추가 ƒ • 이벤트를 처리할 이벤트 처리 루틴 작성(예 : action 이벤트)

  14. 2 컴포넌트에서의 이벤트 처리 1-2 JComponent클래스 • 실습예제 사용자 인터페이스 컴포넌트 생성 컨테이너 객체에 레이아웃 설정 (FlowLayout) 이벤트 처리 결과를 저장할 JLabel객체 생성 프레임과 연관된 컨테이너 객체 생성 버튼(male) 객체에 이벤트 리스너를 등록 버튼(female) 객체에 이벤트 리스너를 등록 이벤트 패키지 포함 ActionListener인터페이스 포함 컴포넌트를 컨테이너에 추가

  15. 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 : 컨테이너에 컴포넌트를 추가하였다.

  17. 2 컴포넌트에서의 이벤트 처리 1-2 JComponent클래스 • 프로그램 설명 • 16~17 : 두 개의 버튼에 이벤트 리스너를 등록하였다. 이벤트 리스너를 등록한다는 의미는 해당 컴포넌트에서 등록한 이벤트가 발생하면 그것을 이벤트 처리 루틴에 보내어 처리한다는 의미이다. 자바 프로그램에서 컴포넌트에서 발생된 이벤트를 처리하기 위해서는 반드시 컴포넌트에 관련 이벤트 리스너를 등록하여야 한다. • 23 :  ActionListener인터페이스에는  actionPerformed(ActionEventae) 메소드가 선언되어 있다. 이 메소드를 오버라이딩하여 이벤트 처리 루틴을 작성한다. 이 메소드는 ActionEvent클래스의 객체를 매개변수로 받아들이고 있다. 즉 JVM은 이벤트 리스너가 등록된 컴포넌트에써 이벤트가 발생하면, 관련 클래스로부터 객체를 생성하여 이벤트 처리 루틴에게 넘겨주게 된다. 이벤트 처리 루틴은 매개변수로 받은 이벤트 객체 정보를 이용하여 이벤트를 처리한다. • 24 : getActionCommand() 메소드는 이벤트가 발생한 컴포넌트가 가진 레이블(버튼의 이름)을 반환하는 메소드이다. 반환된 이름을 출력할 객체의 내용으로 설정하고 있다.   

  18. 2 컴포넌트에서의 이벤트 처리 1-2 JComponent클래스

  19. 3 이미지 아이콘(ImageIcon)과 라벨(Label) • ImageIcon클래스 • 이미지를 아이콘화하여 제공하는 클래스 • ImageIcon클래스 생성자 ImageIcon(String filname) ImageIcon(URL url) 형식

  20. 3 이미지 아이콘(ImageIcon)과 라벨(Label) • ImageIcon클래스의 메소드

  21. 3 이미지 아이콘(ImageIcon)과 라벨(Label) • JLabel클래스 생성자 • JLabel클래스의 메소드 JLabel(Icon i) JLabel(String s) JLabel(String s, Icon i, int align) 형식

  22. 3 이미지 아이콘(ImageIcon)과 라벨(Label) • 실습예제 ActionListener인터페이스 포함 국기의 사진을 이용하여 ImageIcon객체 생성 ImageIcon객체를 이용하여 버튼 객체 생성 버튼(korea) 객체에 이벤트 리스너를 등록

  23. 3 이미지 아이콘(ImageIcon)과 라벨(Label) • 실습예제 문자열을 이벤트의 결과로 (JLabel객체) 출력

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

  25. 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) 형식

  26. 4 텍스트 필드와 텍스트 에리어 • 실습예제 두 개의 텍스트 객체 선언 20개의 문자를 저장할 JTextField객체 생성 20개의 문자 7줄을 저장할 JTextArea객체 생성 텍스트 필드 객체에 이벤트 리스너 등록

  27. 4 텍스트 필드와 텍스트 에리어 • 실습예제 텍스트 에리어에 문자열을 추가(append()) 텍스트 필드를 clear

  28. 4 텍스트 필드와 텍스트 에리어 • 프로그램 설명 • 06~16 : 두 개의 텍스트 관련 객체를 선언하였다. 이벤트 처리 루틴에서도 사용하기 때문에 메소드 외부에 private로 선언하였다. • 08 : 20개의 문자를 저장할 수 있는 JTextField객체를 생성하였다. • 09 : 20개의 문자를 7줄로 나타낼 수 있는 JTextArea객체를 생성하였다. • 14 : 텍스트 필드에 입력한 내용을 텍스트 에리어에 나타내기 위해서는 텍스트 필드 이벤트 리스너를 등록해야 한다.  • 21 : 이벤트 처리 루틴에서 텍스트 필드에서 가져온 문자열을 텍스트 에리어에 첨가한다. append() 메소드는 현재 텍스트 에리어에 추가하는 메소드이다. • 22 : 텍스트 필드의 내용을 clear 한다.

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

  30. 5 버튼 • AbstractButton클래스의 주요 메소드

  31. 6 푸시 버튼 • JButton클래스 생성자 JButton(Icon i) JButton(String s) JButton(String s, Icon i) 형식

  32. 6 푸시 버튼 • 실습예제 3개의 국기를 가지고 ImageIcon객체 생성 한국의 국기를 가지고 JButton객체 생성 버튼이 눌러졌을 때 나타낼 이미지 아이콘 설정 마우스가 지나갈 때(rollover) 나타낼 이미지 아이콘 설정

  33. 6 푸시 버튼 • 실습예제

  34. 6 푸시 버튼 • 프로그램 설명 • 06~08 : 3개의 국기를 가지고 ImageIcon객체를 생성하였다.  • 10~11 : 버튼이 눌러졌을 때, 버튼이 지나갈 때를 지정하는 메소드를 사용하여 아이콘을 설정하였다. 이 프로그램은 이벤트 처리 루틴이 없지만, AbstractButton클래스의 메소드를 이용하여 이벤트를 처리한 효과를 나타내고 있다.

  35. 6 푸시 버튼 • 실습예제 5개의 과일 사진으로 ImageIcon객체 생성 5개의 ImageIcon객체를  사용하여 버튼 객체 생성

  36. 6 푸시 버튼 • 실습예제 각 버튼에 이벤트 리스너 등록 각 버튼이 가진 라벨을 텍스트 필드의 내용으로 설정

  37. 6 푸시 버튼 • 프로그램 설명 • 08~17 : 5개의 과일 사진으로 ImageIcon객체를 생성하고, 생성된 ImageIcon객체로 버튼 객체를 생성하였다. • 26~30 : 생성된 각 버튼에 이벤트 리스너를 등록하였다. • 37 : 이벤트 처리 루틴에서 이벤트를 발생한 객체가 가진 문자열을(버튼의 이름) 텍스트 필드의 내용으로 나타내었다.

  38. 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) 형식

  39. 7 체크박스 • 실습예제 체크박스의 이벤트 처리를 위해 ItemListener포함

  40. 7 체크박스 • 실습예제 이벤트를 발생시킨 객체의 이름을 출력

  41. 7 체크박스 • 프로그램 설명 • 05 : 이 프로그램에서는 체크박스 컴포넌트를 사용하여 이벤트를 처리하고 있다. 체크박스 컴포넌트의 이벤트를 처리하기 위해서는 ItemListener인터페이스를 포함해야 한다. 각 컴포넌트에서 발생 가능한 이벤트와 이벤트 처리를 위한 인터페이스의 선정 방법은 15장에서 설명하였다.  • 29 : getItem() 메소드는 이벤트를 발생시킨 객체를 Object형으로 반환한다. Object형의 객체는 하위 클래스의 어떠한 형으로도 형변환이 가능하다. 여기서는 Object형의 객체를 JCheckBox형으로 형변환하였다. getText() 메소드(AbstractButton클래스 메소드)는 해당하는 객체의 문자열을 반환하는 메소드이다. 반환된 문자열을 텍스트 필드에 출력하고 있다. 

  42. 7 체크박스

  43. 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() 형식 형식

  44. 8 라디오 버튼 • 실습예제 JRadioButton 클래스 객체 생성 버튼 그룹 객체 생성

  45. 8 라디오 버튼 • 실습예제 각 라디오 버튼을  하나의 그룹으로 만듦 각 버튼에 이벤트 리스너 등록

  46. 8 라디오 버튼 • 실습예제

  47. 8 라디오 버튼 • 프로그램 설명 • 08~11 : JRadioButton클래스로부터 4개의 객체를 생성한다. • 14 : 버튼을 하나의 그룹으로 만들기 위한 ButtonGroup객체를 생성한다. • 15~18 : 버튼 그룹 객체를 이용하여 각각의 라디오 버튼을 하나의 그룹으로 만든다.

  48. 9 콤보박스 • JComboBox클래스 생성자 • ComboBox클래스 메소드 JComboBox() JComboBox(Vector v) 형식

  49. 9 콤보박스 • 실습예제 이벤트 처리를 위해  ItemListener포함 이미지를 이용하여 JLabel객체 생성 JComboBox객체 생성 컨터이너에JLabel객체 추가 콤보박스 객체에 아이템 추가

  50. 9 콤보박스 • 실습예제 컨테이너에 콤보박스 추가 문자열과 연관된 이미지를 이용하여 JLabel객체 설정 콤보박스에 이벤트 리스너 등록 getItem() 메소드를 이용하여 문자열 생성