반응형
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(400, 200); // 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 |
반응형
'It Study > POWER JAVA(기본서)' 카테고리의 다른 글
POWER JAVA 10장 예제 11-3 사용자로부터 받은 정수의 제곱 계산(GUI) (0) | 2022.11.09 |
---|---|
POWER JAVA 10장 예제 11-1 label 및 font 변경 (0) | 2022.11.09 |
POWER JAVA 10장 mini project GUI 활용 계산기 (일부 기능만) -재수정 (0) | 2022.11.07 |
POWER JAVA 10장 예제 10-3 자동차 움직이기 (주석) (0) | 2022.11.03 |
POWER JAVA 10장 Lab1 가위,바위,보 게임 (주석) (0) | 2022.11.02 |