Chap14 스윙(SWING) 14.1 스윙 컴포넌트 14.2 컴포넌트의 이벤트 처리 14.3 이미지 아이콘(ImageIcon)과 라벨(Label) 14.4 텍스트 필드(Text Field)와 텍스트 에리어(Text Area) 14.5 버튼(Button) 14.6 푸시 버튼 14.7 체크 박스 14.8 라디오 버튼 14.9 콤보 박스 14.10 리스트 14.11 스크롤 바 14.12 그룹 홀더(Tabbed Panes)
javax.swing.Jcomponent 14.1 스윙 컴포넌트 javax.swing.* 패키지에서 SWING과 관련된 모든 컴포넌트들을 제공 javax.swing.Jcomponent : 스윙 컴포넌트의 최상위 클래스 java.lang.Object java.awt.Component java.awt.Container javax.swing.Jcomponent 스윙의 모든 컴포넌트들 Jcomponent 클래스의 상속관계
JRadioButtonMenuItem 14.1 스윙 컴포넌트 주요 스윙 컴포넌트의 상속관계 JComponent AbstractButton JComboBox JLabel JMenuBar JPanel JScrollPane JTabbedPane JTextComponent JTable JTree Component JMenuItem JButton JToggleButton JCheckBoxMenuItem JMenu JRadioButtonMenuItem JCheckBox JRadioButton JTextArea JTextField Container Panel Applet JApplet
14.1 스윙 컴포넌트 스윙 관련 주요 클래스의 기능 클래스명 주요 기능 AbstractButton 버튼과 연관된 클래스들의 상위 추상 클래스 ButtonGroup 버튼을 그룹화하기 위한 클래스 ImageIcon 이미지를 아이콘으로 캡슐화하여 제공하는 클래스 Japplet 애플릿(applet)의 스윙 버전으로 Applet 클래스로부터 상속된 클래스 Jbutton 스윙에서 사용하는 버튼 클래스 JCheckBox 스윙에서 사용하는 체크 박스 클래스 JCheckBoxMenuItem 스윙의 메뉴에서 사용하는 체크박스 클래스 JComboBox 풀다운 리스트를 보여줄 수 있는 콤보 박스 클래스 Jlabel 스윙에서 사용하는 라벨 클래스 Jmenu 스윙의 메뉴에서 사용하는 메뉴 클래스 JMenuBar 스윙의 메뉴 바를 만들기 위한 클래스 JMenuItem 스윙에서 사용하는 메뉴관련 클래스의 상위 클래스 Jpanel 스윙에서 사용하는 판넬 클래스
14.1 스윙 컴포넌트 스윙 관련 주요 클래스의 기능(계속) 클래스명 주요기능 JRadioButton 스윙에서 사용하는 라디오버튼 클래스 JRadioButtonMenuItem 스윙의 메뉴에서 사용하는 라디오버튼 클래스 JScrollPane 스크롤 윈도우를 나타내는 클래스 JTabbedPane 그룹을 홀더 형태로 제공하는 윈도우를 나타내는 클래스 Jtable 데이터를 행과 열로 나타내는 클래스 JTextArea 스윙에서 사용하는 텍스트 에리어 클래스 JTextComponent 스윙에서 사용하는 텍스트 관련 클래스들의 상위 클래스 JTextFeild 스윙에서 사용하는 텍스트 필드 클래스 JToggleButton JCheckBox 클래스와 JRadioButton 클래스의 상위 클래스 Jtree 트리 형태를 나타내는 클래스
14.2 컴포넌트의 이벤트 처리 GUI 컴포넌트에서 발생하는 전형적인 이벤트 처리 형태(예 : 버튼) (1) 이벤트와 연관된 인터페이스를 사용하여 클래스 생성 public class MyButton implements ActionListener (2) GUI 구축을 위한 컴포넌트 객체를 생성 JButton mybutton = new JButton("선택"); (3) 이벤트를 받아들인 컴포넌트 객체(여기서는 버튼 객체)에 리스너를 등록 mybutton.addActionListener(this);
14.2 컴포넌트의 이벤트 처리 (4) add() 메소드를 사용하여 컴포넌트를 애플릿 또는 컨테이너에 추가 add(mybutton); (5) 이벤트를 처리할 이벤트 처리 루틴 작성(예 : action 이벤트) public void actionPerformed(ActionEvent ae) { label.setText(ae.getActionCommand()) ; } actionPerformed() : ActionListener 인터페이스에 선언된 메소드([표 17-9]) getActionCommand() : ActionEvent 클래스에서 제공되는 메소드이다([표17.3] 참조). 예제 : ButtonEventTest.java
14.3 이미지 아이콘과 라벨 ImageIcon 클래스 : 이미지를 아이콘화하여 제공하는 클래스 생성자 ImageIcon(String filname) ImageIcon(URL url) ImageIcon 클래스의 주요 메소드 메소드 이름 메소드 설명 int getIconHeight() 아이콘의 높이를 픽셀 값으로 반환 int getIconWidth() 아이콘의 폭을 픽셀 값으로 반환 void paintIcon(Component comp, Graphics g, int x, int y) Graphics 객체 g의 x, y의 위치에 아이콘을 그린다. 아이콘을 그리는 동작에 대한 부가적인 정보는 comp에서 제공
14.3 이미지 아이콘과 라벨 JLabel 클래스 : 문자열이나 아이콘을 제공할 수 있는 클래스 생성자 JLabel(Icon i) JLabel(String s) JLabel(String s, Icon i, int align) JLabel 클래스의 주요 메소드 메소드 이름 메소드 설명 Icon getIcon() JLabel 객체가 가지고 있는 Icon 객체를 반환 String getText() JLabel 객체가 가지고 있는 문자열을 문자열 객체로 반환 void setIcon(Icon i) JLabel 객체에 아이콘을 설정 void setText(String s) JLabel 객체에 문자열을 설정
14.3 이미지 아이콘과 라벨 예제 : JLabelDemo.java
14.4 텍스트 필드(Text Field)와 텍스트 에리어(Text Area) JTextField 클래스와 JTextArea 클래스 JTextField 생성자 JTextField() JTextField(int cols) JTextField(Sting str, int cols) JTextField(Sting str) JTextArea 생성자 JTextArea() JTextArea(String str) JTextArea(int rows, int cols) JTextArea(String str, int rows, int cols) JTextArea(String str, int rows, int cols, int scrollbars)
14.4 텍스트 필드(Text Field)와 텍스트 에리어(Text Area) 예제 : JTFandJTA.java
14.5 버튼(Button) 스윙의 버튼은 AWT 버튼보다 다양한 기능을 제공 스윙의 버튼들은 AbstractButton의 하위 클래스 AbstractButton 클래스 : 버튼의 동작을 제어할 수 있는 다양한 메소드 제공 AbstractButton 클래스의 주요 메소드 메소드 이름 메소드 설명 String getActionCommand() 버튼이 실행한 명령을 반환 void setActionCommand(String s) 버튼에 대해 새로운 실행 명령을 s로 설정 String getText() 버튼의 텍스트(버튼의 이름으로 지정) 반환 void setText(String text) 버튼의 텍스트를 text로 설정 Icon getIcon() 버튼의 묵시적 아이콘을 반환
14.5 버튼(Button) AbstractButton 클래스의 주요 메소드-계속 메소드 이름 메소드 설명 void setIcon(Icon icon) 버튼의 묵시적 아이콘을 icon으로 설정 Icon getPressedIcon() 버튼이 눌려졌을때 나타낼 아이콘을 반환 void setPressedIcon(Icon icon) 버튼이 눌려졌을때 나타낼 아이콘을 icon으로 설정 Icon getRolloverIcon() 버튼위로 마우스가 지나갈 때 나타낼 아이콘을 반환 void setRolloverIcon(Icon icon) 버튼위로 마우스가 지나갈 때 나타낼 아이콘을 icon으로 설정 Boolean isSelected() 버튼의 상태(선택:true, 비선택:false)를 반환 void setSelected(Boolean b) 버튼의 선택 상태를 b로 설정
14.6 푸시 버튼 스윙은 버튼의 기능을 Jbutton 클래스로 제공 Jbutton 클래스의 생성자 JButton(Icon i) JButton(Sting s) JButton(String s, Icon i)
14.6 푸시 버튼 예제 : JButtonDemo.java 예제 : JButtonTest.java
14.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) JCheckBox 클래스의 메소드 메소드 이름 메소드 설명 void setSelected(boolean state) state를 참으로 설정하면 체크박스가 선택된 상태로 나타난다
14.7 체크박스 예제 : JCheckBoxTest.java
14.8 라디오 버튼 스윙은 라디오 버튼의 기능을 JRadiobutton 클래스로 제공 JRadiobutton 클래스의 생성자 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 클래스 : 버튼을 그룹으로 묶는다 메소드 이름 메소드 설명 void add(AbstractButton ab) 그룹에 ad로 지정된 버튼을 추가한다.
14.8 라디오 버튼 예제 : JRadioButtonTest.java
14.9 콤보 박스 JComboBox 클래스 : 텍스트 필드와 풀다운 리스트를 조합한 형태 생성자 JComboBox(Vector v) v : 콤보 박스를 초기화 시키는 Vector 객체 JComboBox 클래스의 메소드 메소드 이름 메소드 설명 void addItem(Object obj) 콤보 박스에 한 항목을 추가
14.9 콤보 박스 예제 : JComboBoxTest.java
14.10 리스트(Lists) 리스트 컴포넌트는 콤보 박스의 기능과 같지만, 리스트 중에서 다수개를 선택할 수 있는 기능을 추가로 제공 생성자 JList() JList(Object[] items) items는리스트를 생성할 배열을 의미한다.
14.10 리스트(Lists) JList 클래스의 주요 메소드 메소드 이름 메소드 설명 int getSelectedIndex() 리스트 중에서 첫 번째 선택된 아이템의 인덱스를 반환 void setSelectedIndex(int index) index로 지정된 아이템을 선택 int[] getSelectedIndices() 리스트 중에서 선택된 모든 아이템의 인덱스를 배열로 반환 void setSelectedIndices(int[] indices) indices 배열에서 지정된 아이템을 모두 선택 Object getSelectedValue() 리스트 중에서 첫 번째 선택된 아이템을 Object 객체로 반환 Object[] getSelectedValues() 리스트에서 선택된 모든 아이템을 Object 객체의 배열로 반환(인덱스 순서)
14.10 리스트(Lists) 예제 : JListTest.java
14.11 스크롤 바 JScrollPane 클래스 : 스크롤 바의 기능을 제공 생성자 JScrollPane(Component comp) JScrollPane(int vsb, int hsb) JScrollPane(Component comp, int vsb, int hsb) comp : 스크롤 바가 추가될 컴포넌트 vsb와 hsb : 수직, 수평 스크롤 바를 설정하기 위해 사용되는 상수 HORIZONTAL_SCROLLBAR_ALWAYS 항상 수평 스크롤 바를 제공 HORIZONTAL_SCROLLBAR_AS_NEEDED 필요한 경우(판넬의 크기를 넘어서 는 경우)에만 수직 스크롤 바 제공 VERTICAL_SCROLLBAR_ALWAYS 항상 수직 스크롤 바를 제공 VERTICAL_SCROLLBARAS_NEEDED 필요한 경우에만 수직 스크롤 바 제공
14.11 스크롤 바 예제 : JScrollPaneTest.java
14.12 그룹 홀더(Tabbed Panes) JTabbedPane 클래스 일종의 메뉴처럼 사용될 수 있는 그룹 홀더 여러 개의 그룹(판넬)을 구성하여 사용하며, 한 순간에는 하나의 홀더만 선택할 수 있다 그룹 홀더 객체를 생성하기 위해서는 묵시적인 생성자를 사용 그룹 홀더에 각각의 그룹들을 추가하기 위해서 addTab() 메소드를 이용 void addTab(String str, Component comp) str : 홀더의 제목 comp : Component 객체로서 폴더의 내용을 가지고 있는 객체 각각의 그룹 홀더를 생성하기 위해서 JPanel 클래스를 사용
14.12 그룹 홀더(Tabbed Panes) 그룹 홀더를 사용하기 위한 과정 JTabbedPane 클래스를 이용하여 그룹 홀더 객체를 생성 그룹 홀더에 추가할 각각의 홀더 객체를 JPanel 클래스를 이용하여 작성 생성된 JPanel 객체를 JTabbedPane 객체에 추가(addTab() 메소드 이용) 모든 홀더가 완성될 때 까지 1-3번을 반복 완성된 그룹 홀더를 프레임이나 애플릿에 추가
14.12 그룹 홀더(Tabbed Panes) 예제 : JTabbedPaneTest.java