본문 바로가기
It Study/POWER JAVA(기본서)

POWER JAVA 10장 예제 11-8 comboBox 사용법

by prlkt5200 2022. 11. 9.
반응형

comboBox 사용방식인데, 한번 쳐봤음에도 낯설어서 올려봅니다!

참고로 D드라이브에 이미지 파일 3개 준비하셔야 합니다(강아지,고양이,새 또는 본인이 원하는 사진들) 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
 
public class ComboBoxFrame extends JFrame implements ActionListener {
 
    JLabel label;
 
    public ComboBoxFrame() {
        setTitle("콤보 박스");
        setSize(400200);
 
        // String []을 설정해준다.
        String[] animals = { "dog""cat""bird" };
        // String []의 참조변수를 JComboBox의 생성자에 넣어준다.
        // 그로인해 배열에 해당하는 내용을 가진 ComboBox 객체가 만들어진다.
        JComboBox animalList = new JComboBox(animals);
 
        // 특정 위치(index)를 설정해준다.
        animalList.setSelectedIndex(0);
 
        // listener 처리를 해준다.
        animalList.addActionListener(this);
 
        // label 객체 생성 후 위치 정렬 방식을 설정해준다.
        label = new JLabel();
        label.setHorizontalAlignment(JLabel.CENTER);
 
        // 아래에 있는 changePicture 메소드를 실행하고 매개변수는
        // 선택한 위치의 인덱스를 반환하면 0이며, 따라서 anmals[0]. 즉 dog를 의미한다.
        // 메소드의 매개변수를 dog로 해서 실행한다.
        changePicture(animals[animalList.getSelectedIndex()]);
 
        // ComboBox를 프레임에 추가시키고, 정렬한다.
        add(animalList, BorderLayout.NORTH);
        // label을 프레임에 추가시키고 정렬한다.
        add(label, BorderLayout.CENTER);
 
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
 
    }
 
    public void actionPerformed(ActionEvent e) {
        // e.getSoucr()로 불러온 이벤트 소스 값은 Object 타입이므로 형변환 시켜준다.
        // 그것을 JComboBox의 참조변수 cb와 바인딩 해준다.
        // cb를 통해 이벤트 소스에 접근할 수가 있다. 접근한 소스의 getSelectedItem()를 통해
        // 선택된 항목을 불러오나 이 역 시 Object 타입이기에 String 타입으로 형변환 해준다.
        // 그리고 메소드의 매개변수로 사용해준다.
        JComboBox cb = (JComboBox) e.getSource();
        String name = (String) cb.getSelectedItem();
        changePicture(name);
    }
 
    protected void changePicture(String name) {
        // ImageIcon 객체를 생성한다(이미지 파일 포함해서)
        // label에 icon을 설정해준다.
        ImageIcon icon = new ImageIcon("d:\\" + name + ".PNG");
        label.setIcon(icon);
        if (icon != null) {
            label.setText(null);
        } else {
            label.setText("이미지가 발견되지 않았습니다.");
        }
    }
 
    public static void main(String[] args) {
        ComboBoxFrame frame = new ComboBoxFrame();
    }
 
}
 
cs
반응형