코딩/JAVA

GUI - JTebbedPane, ImageIcon 활용 예

ADWELL 2022. 8. 30. 15:46

라디오버튼 클릭시 해당 이미지를 띄움

public class GuiTest {
	public static void main(String[] args) {
		new P02_JTabbedPane();
	}
}
class P02_JTabbedPane{

	JFrame frame = new JFrame("P02_JTabbedPane");
	JPanel panel1, panel2;
	JLabel label = new JLabel();
	JRadioButton[] radio = new JRadioButton[4];
	String[] fruits = {"사과","바나나","멜론","포도"};
	ImageIcon[] icon = {
			new ImageIcon("image/apple.jpg"),
			new ImageIcon("image/banana.jpg"),
			new ImageIcon("image/melon.jpg"),
			new ImageIcon("image/grape.jpg")
	};
	
	public P02_JTabbedPane() {
		run2();
	}
	private void run2() {
		JTabbedPane tabbedPane = new JTabbedPane();
		
		//탭1의 패널
		panel1 = new JPanel();
		JButton btn_red = new JButton("RED");
		JButton btn_blue = new JButton("BLUE");
		JButton btn_green = new JButton("GREEN");
		
		btn_red.addActionListener(new backgroundChangeListener());
		btn_blue.addActionListener(new backgroundChangeListener());
		btn_green.addActionListener(new backgroundChangeListener());
		
		panel1.add(btn_red);
		panel1.add(btn_blue);
		panel1.add(btn_green);

		//탭2의 패널
		panel2 = new JPanel();
		
		ButtonGroup btnGroup = new ButtonGroup();
		
		for(int i=0; i<radio.length;i++) {
			radio[i] = new JRadioButton(fruits[i]);			//라디오버튼 생성
			btnGroup.add(radio[i]);					//라디오버튼 그룹화
			radio[i].addItemListener(new MyItemListener());		//클릭시 이벤트
			panel2.add(radio[i]);					//패널2에 라디오버튼 추가
		}
		
		panel2.add(label);
		tabbedPane.add("배경색",panel1);
		tabbedPane.add("과일", panel2);
		
		frame.add(tabbedPane);
		frame.setBounds(600, 200, 500, 420);
		frame.setVisible(true);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	};
	
	//색깔버튼 클릭시 배경색 변경하는 클래스
	private class backgroundChangeListener implements ActionListener{

		@Override
		public void actionPerformed(ActionEvent e) {
			JButton btn_cur = (JButton)e.getSource();
			String[] bgColor = {"RED", "BLUE", "GREEN"};
			Color[] colors = {Color.RED, Color.BLUE, Color.GREEN};
			
			for(int i=0; i<bgColor.length; i++) {
				if(btn_cur.getText().equals(bgColor[i])) {
					panel1.setBackground(colors[i]);
				}
			}
		}	
	}

	//라디오버튼 클릭시 이미지 띄우는 클래스
	class MyItemListener implements ItemListener{

		@Override
		public void itemStateChanged(ItemEvent e) {
			if(e.getStateChange()==ItemEvent.DESELECTED) {
				return;
			}
			for(int i=0; i<radio.length; i++) {
				if(radio[i].isSelected()) {
					Image img = icon[i].getImage().getScaledInstance(450, 300, Image.SCALE_SMOOTH);
					icon[i] = new ImageIcon(img);
					label.setIcon(icon[i]);
				}
			}
		}	
	}
}