swing component

24
Swing Component 컴컴컴컴컴컴 컴컴컴 컴컴 컴컴컴 410 컴 [email protected]

Upload: may-saunders

Post on 03-Jan-2016

93 views

Category:

Documents


0 download

DESCRIPTION

Swing Component. 컴퓨터정보과 안유정 교수 연구동 410 호 [email protected]. Swing Component. 스윙 컴포넌트 스윙 컴포넌트의 공통 메소드들 Jlabel, 레이블 컴포넌트 Jbutton, 버튼 컴포넌트 이미지를 가진 버튼 컴포넌트 만들기 예제. 스윙 컴포넌트. JComponent, AbstractButton, JTextCopmonent 는 추상클래스. Object. Component. Container. JComponent. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Swing Component

Swing Component

컴퓨터정보과 안유정 교수연구동 410 호

[email protected]

Page 2: Swing Component

Swing ComponentSwing Component

스윙 컴포넌트

스윙 컴포넌트의 공통 메소드들

Jlabel, 레이블 컴포넌트

Jbutton, 버튼 컴포넌트

이미지를 가진 버튼 컴포넌트 만들기

예제

Page 3: Swing Component

스윙스윙 컴포넌트컴포넌트

ObjectObject

Component

Component

Container

Container

JComponent

JTextComponent

JTextComponent

AbstractButton

AbstractButton

JTextField

JTextField

JTextArea

JTextArea

JMenuItem

JMenuItemJButtonJButtonJToggleBu

ttonJToggleBu

tton

JPasswordField

JPasswordFieldJMenuJMenu JCheckBoxMen

uItemJCheckBoxMen

uItemJCheckB

oxJCheckB

oxJRadioBut

tonJRadioBut

ton

JLabel

JLabel JListJList JCombo

BoxJCombo

Box JSliderJSliderJScrollBar

JScrollBar

JMenuBar

JMenuBar

JComponent, AbstractButton, JTextCopmonent 는 추상클래스

JPanel

JPanel

3

Page 4: Swing Component

스윙 컴포넌트스윙 컴포넌트

스윙의 주요 클래스들AbstractButton 버튼과 연관된 클래스들의 상위 추상 클래스ButtonGroup 버튼을 그룹화하기 위한 클래스ImageIcon 이미지를 아이콘으로 캡슐화하여 제공하는 클래스JApplet Applet 클래스로부터 상속된 스윙의 애플릿

클래스JButton 스윙에서 사용하는 버튼 클래스 JCheckBox 스윙에서 사용하는 체크 박스 클래스JCheckBoxMenuItem 스윙의 메뉴에서 사용하는 체크박스 클래스JComboBox 풀다운 리스트를 보여줄 수 있는 콤보 박스 클래스JComponent 모든 스윙 컴포넌트의 상위 클래스JLabel 스윙에서 사용하는 라벨 클래스Jmenu 스윙의 메뉴에서 사용하는 메뉴 클래스JMenuBar 스윙의 메뉴 바를 만들기 위한 클래스JMenuItem 스윙에서 사용하는 메뉴관련 클래스의 상위 클래스JPanel 스윙에서 사용하는 판넬 클래스

Page 5: Swing Component

스윙 컴포넌트스윙 컴포넌트

스윙의 주요 클래스들

JRadioButton 스윙에서 사용하는 라디오버튼 클래스JRadioButtonMenuItem 스윙 창에 라디오버튼형의 메뉴를 만드는 클래스JScrollPane 스크롤바를 갖는 윈도우를 나타내는 클래스JTabbedPane 그룹을 홀더 형태로 제공하는 윈도우를 나타내는 클래스JTable 데이터를 행과 열로 나타내는 클래스JTextComponent 스윙에서 사용하는 텍스트 관련 클래스들의 상위 클래스JTextArea 스윙에서 사용하는 텍스트 에어리어 클래스JTextField 스윙에서 사용하는 텍스트 필드 클래스 JToggleButton JCheckBox 와 JRadioButton 클래스의 상위 클래스JTree 트리 형태를 나타내는 클래스

Page 6: Swing Component

스윙컴포넌트의 공통 메소드스윙컴포넌트의 공통 메소드

void setForeground(Color) 전경색설정void setBackground(Color) 배경색설정void setOpaque(boolean) 불투명성설정void setFont(Font) 폰트 설정Font getFont() 폰트 리턴

void setEnabled(boolean) 컴포넌트 활성화 /비활성화void setVisible(boolean) 컴포넌트 보이기 /숨기기boolean isVisible() 컴포넌트의 보이는 상태 리턴

int getWidth() 폭 리턴int getHeight() 높이 리턴int getX() x 좌표 리턴int getY() y 좌표 리턴Point getLocationOnScreen() 스크린 좌표상에서의 컴포넌트 좌표void setLocation(int, int) 위치 지정void setSize(int, int) 크기 지정

Component add(Component) 자식 컴포넌트 추가void remove(Component) 자식 컴포넌트 제거void removeAll() 모든 자식 컴포넌트 제거Component[] getComponents() 자식 컴포넌트 리스트 리턴Container getParent() 부모 컨테이너 리턴Container getTopLevelAncestor() 최상위 부모 컨테이너 리턴

컴포넌트의 모양과 관련된 메소드 컴포넌트의 상태와 관련된 메소드

컴포넌트의 위치와 크기에 관련된 메소드컨테이너를 위한 메소드

6

Page 7: Swing Component

JLabel, JLabel, 레이블레이블 컴포넌트컴포넌트 JLabel의 용도

텍스트나 이미지를 출력하기 위한 목적 레이블 컴포넌트 생성

JLabel() 텍스트나 이미지 정보가 없는 빈 레이블 컴포넌트 생성

JLabel(Icon image) 이미지만을 가진 레이블 컴포넌트 생성

JLabel(String text) 텍스트만을 가진 레이블 컴포넌트 생성

JLabel(String text, Icon image, int hAlignment) 텍스트와 이미지 , 수평 정렬 값을 가진 레이블 컴포넌트 생성 수평정렬 값인 hAlignment로 사용가능한 값들 .

SwingConstants.LEFT, CENTER, RIGHT

7

Page 8: Swing Component

단순 텍스트 만을 가진 레이블 컴포넌트 생성

이미지를 가진 레이블 컴포넌트 생성 이미지 표현을 위해 ImageIcon 클래스 사용 출력 가능한 이미지 종류 png, gif, jpg sunset.jpg 의 경로명이 "images/sunset.jpg" 인

경우

텍스트와 이미지를 모두 출력하는 경우 텍스트 이미지 모두 출력하고자 하는 경우 수평정렬

값을 지정하여야 함 .

JLabel textLabel = new JLabel("사랑합니다 ");

ImageIcon image = new ImageIcon("images/sunset.jpg");

JLabel imageLabel = new JLabel(image);

ImageIcon image = new ImageIcon("images/sunset.jpg");JLabel label = new JLabel(" 사랑합니다 ", image, SwingConstants.CENTER);

8

JLabel, JLabel, 레이블레이블 컴포넌트컴포넌트

Page 9: Swing Component

JButton, JButton, 버튼버튼 컴포넌트컴포넌트 버튼 컴포넌트

버튼 모양의 컴포넌트로서 , 클릭될 때 ActionEvent 발생

버튼 컴포넌트 생성 JButton()

텍스트나 이미지 아이콘를 가지지 않은 디폴트 버튼 생성 JButton(Icon icon)

이미지 아이콘만을 가진 버튼 생성 JButton(String text)

텍스트만을 가진 버튼 생성 JButton(String text, Icon icon)

텍스트와 이미지 아이콘을 모두 가진 버튼 생성 버튼 컴포넌트 생성 예

오른쪽 버튼 컴포넌트 생성 예ImageIcon ii = new ImageIcon(“phone.jpg”);JButton btn = new JButton(“call~~“, ii);

9버튼 이미지버튼 문자열

Page 10: Swing Component

이미지를 가진 버튼 컴포넌트 만들기이미지를 가진 버튼 컴포넌트 만들기 하나의 버튼에 3 개의 이미지 연결하기

사용자의 마우스 접근에 따라 3 개의 이미지 중 선택 출력

3 개의 버튼 이미지 버튼의 보통 상태 때 출력되는 이미지 : normalIcon

생성자 호출 시에 주어진 이미지 아이콘 버튼 위에 마우스가 올라갈 때 출력되는 이미지 :

rolloverIcon이미지 설정 메소드 : JButton.setRolloverIcon(Icon);

마우스 버튼을 누른 상태 때 출력되는 이미지 : pressedIcon이미지 설정 메소드 : JButton.setPressedIcon(Icon)

이미지 아이콘 생성 new ImageIcon( 이미지 경로명 ); new ImageIcon("images/normalIcon.gif);

10

Page 11: Swing Component

3 3 개의 이미지 아이콘을개의 이미지 아이콘을 가진 버튼 만들기가진 버튼 만들기import javax.swing.*;import java.awt.event.*;import java.awt.*;public class ButtonImageEx extends JFrame {

Container cp;ButtonImageEx() {

setTitle(" 버튼에 아이콘 달기 예제 ");

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);cp = getContentPane();cp.setLayout(new FlowLayout()); ImageIcon normalIcon = new

ImageIcon("images/normalIcon.gif");ImageIcon rolloverIcon = new

ImageIcon("images/rolloverIcon.gif"); ImageIcon pressedIcon = new ImageIcon("images/pressedIcon.gif")

JButton btn = new JButton("call~~", normalIcon); // 평상시 이미지

btn.setRolloverIcon(rolloverIcon); // 버튼에 롤오버할때의 이미지

btn.setPressedIcon(pressedIcon); // 버튼 클릭시 이미지

cp.add(btn);}public static void main(String [] args) {

ButtonImageEx win = new ButtonImageEx();win.setSize(250,200);win.setVisible(true);

}}

보통 상태에 있는 동안(normalIcon.gif)

마우스가 버튼 위에 올라간 경우

(rolloverIcon.gif)

마우스가 눌러진 순간(pressedIcon.gif)

11

Page 12: Swing Component

레이블과 버튼의 정렬레이블과 버튼의 정렬(Alignment)(Alignment)

수평 정렬 컴포넌트 영역 내에 이미지와 텍스트의 수평상의 위치 결정 void setHorizontalAlignment(int align)

수직 정렬 컴포넌트 영역 내에 콘텐츠 ( 이미지와 텍스트 ) 의 수직상의 위치 void setVerticalAlignment(int align)

왼쪽정렬 SwingConstants.LEFT

중앙정렬 SwingConstants.CENTER

오른쪽정렬 SwingConstants.RIGHT

위쪽정렬 SwingConstants.TOP

중앙정렬 SwingConstants.CENTER

아래쪽정렬 SwingConstants.BOTTOM

버튼 영역

버튼 영역

12

Page 13: Swing Component

클릭하면

swingswing 윈도우와 윈도우와 Jbutton, JLabelJbutton, JLabel 예제 해보기예제 해보기

Page 14: Swing Component

[ 예제 버튼만들기 ] - ButtonEventsTest.java

import java.awt.*; import javax.swing.*; import java.awt.event.*;

public class ButtonEventTest extends JFrame implements ActionListener{// 버튼의 이벤트를 처리하기 위해 ActionListener 포함

private JLabel result; // 이벤트 결과를 지정하기 위한 JLabel 객체 생성 public ButtonEventTest() { JButton male = new JButton(" 남자 "); JButton female = new JButton(" 여자 "); JLabel label = new JLabel(" 당신의 성별은 ? "); result = new JLabel(""); male.addActionListener(this); female.addActionListener(this); // 각각의 버튼에 리스너 등록

Container ct = getContentPane(); ct.setLayout(new FlowLayout()); // 레이아웃을 설정 ct.add(male); ct.add(female); ct.add(label); ct.add(result); // 프레임에 추가 }

Page 15: Swing Component

[ 예제 버튼만들기 ] ( 계속 )

public void actionPerformed(ActionEvent ae) { // 버튼이 눌려졌을 때 호출 result.setText(ae.getActionCommand()); // 레이블에 버튼의 이름을 입력 } public static void main(String[] args) { ButtonEventTest bet = new ButtonEventTest(); bet.setTitle("ButtonEvent Test"); bet.setSize(300,100); bet.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); bet.setVisible(true); }}

Page 16: Swing Component

TextComponeTextComponent nt

JTextComponent 클래스

JTextField, JTextArea 클래스의 상위클래스 JTextField : 한 줄의 입력을 받을 때 JTextArea : 여러 줄의 입력을 받을 때

JTextComponent

JTextField JTextArea

Page 17: Swing Component

JTextField, JTextField, 텍스트필드 텍스트필드 컴포넌트컴포넌트

텍스트 필드란 ? 한 줄 짜리 텍스트 ( 문자열 ) 입력 창을 구현한 컴포넌트 텍스트 입력 도중 <Enter> 키가 입력되면 Action 이벤트 발생 입력 창의 크기가 입력 가능한 문자 개수는 아니다 .

생성자 JTextField() 빈 텍스트 입력 창 생성 JTextField(int columns) 입력 창의 크기가 columns 인 빈 텍스트 입력 창 생성 JTextField(String text) text 문자열로 초기화된 텍스트 입력창 생성 JTextField(String text, int columns) 입력 창의 크기가 columns 이고 , text 문자열이 초기에 출력되는 입력 창 생성

17

Page 18: Swing Component

텍스트 필드 만들기텍스트 필드 만들기import javax.swing.*;import java.awt.*;public class TextFieldEx extends JFrame {

TextFieldEx() { // 생성자 Container contentPane = getContentPane();contentPane.setLayout(new FlowLayout());contentPane.add(new JLabel(" 이름 : "));contentPane.add(new JTextField(10));contentPane.add(new JLabel(" 학과 : "));contentPane.add(new JTextField(“xxx 공학

과 "));contentPane.add(new JLabel(" 주소 : "));contentPane.add(new JTextField(" 서울시 ...",

20));}

public static void main(String [] args) { TextFieldEx win = new TextFieldEx();

win.setSize(350,200); win.setTitle(" 텍스트 필드 만들기 예제 "); win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

win.setVisible(true);}

}

초기화면

사용자가 입력한 경우

18

Page 19: Swing Component

텍스트 필드의 주요 메소드텍스트 필드의 주요 메소드JTextField jt =new JTextField(); 라는 객체가 있을때

텍스트의 편집을 불가능하게 하기 jt.setEditable(false);

텍스트 창에 강제로 문자열 출력하기 jt.setText(“hello”);

텍스트 폰트 지정하기 jt.setFont(new Font(“ 고딕체” , Font.ITALIC,

20);텍스트 창에 있는 문자열 선택하기

jt.select(0, 5); // 0 번 문자에서 5 번째까지 문자열 선택

19

Page 20: Swing Component

TextArea, TextArea, 텍스트에어리어텍스트에어리어 컴포넌트컴포넌트

텍스트에어리어란 ? 여러 줄을 입력할 수 있는 텍스트 입력 창 스크롤바를 지원하지 않는다 .

JScrollPane 객체에 삽입하는 방식으로 스크롤바 지원 ( 다음 페이지에 예 )

생성자 JTextArea() 빈 텍스트 입력 창 생성 JTextArea(int rows, int columns)

창의 크기가 rows 줄 , columns 열인 빈 텍스트 입력 창 생성

JTextArea(String text)text 문자열로 초기화된 텍스트 입력 창 생성

JTextArea(String text, int rows, int columns)창의 크기가 rows 줄 , columns 열이고 , text 문자열이

초기에 출력된 텍스트 입력 창 생성 20

Page 21: Swing Component

TextArea, TextArea, 텍스트에어리어텍스트에어리어 컴포넌트컴포넌트

7 줄

20 문자new JTextArea(“hello”, 7, 20); new JScrollPane(new JTextArea(“hello”, 7, 20));

21

Page 22: Swing Component

텍스트텍스트 컴포넌트 예컴포넌트 예

22

텍스트 필드에서 입력한 문장이 텍스트 에어리어에 출력되는 예제

Page 23: Swing Component

import javax.swing.*; import java.awt.*; import java.awt.event.*; public class JTFandJTA extends JFrame implements ActionListener { // 텍스트 필드의 이벤트를 처리하기 위해 ActionListener 포함 private JTextField jtf; private JTextArea jta; public JTFandJTA() { jtf = new JTextField(20); jta = new JTextArea(7,20); // JTextField, JTextArea 객체 생성 Container ct = getContentPane(); ct.setLayout(new FlowLayout()); // 화면 배치방법 설정 ct.add(jtf); ct.add(jta); // 컨테이너를 윈도우에 추가 jtf.addActionListener(this); // 텍스트 필드에 이벤트 연결 }

23

텍스트텍스트 컴포넌트 예컴포넌트 예

Page 24: Swing Component

public void actionPerformed(ActionEvent ae) { // 텍스트 필드에서 return 키를 쳤을때 호출 jta.append(ae.getActionCommand()+"\n"); // 텍스트 필드의 내용을 TextArea 영역에 표시 } public static void main(String[] args) { JTFandJTA jj = new JTFandJTA(); jj.setTitle("JTextField,JTextArea Test"); jj.setSize(500,200); jj.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jj.setVisible(true); }}

24

텍스트텍스트 컴포넌트 예컴포넌트 예