import java.awt.FlowLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
/*
* [1] 버튼 그룹에 체크박스 3개 만들어 선택하면 해당 이미지가 출력되는 프로그램
* 예) 사과(checkbox) / 배(checkbox) / 체리(checkbox)
* (+) 버튼을 그룹으로 묶으면, 2가지 이상 체크가 불가능하다.
*/
public class Check1 extends JFrame {
// 이미지 3개 저장할 객체 생성
// 해당 이미지는 예시이므로, workspace 폴더에 이미지를 삽입 해주어야 한다.
ImageIcon img1 = new ImageIcon("a.jpg");
ImageIcon img2 = new ImageIcon("b.jpg");
ImageIcon img3 = new ImageIcon("c.jpg");
JLabel lbl = new JLabel();
JPanel p;
Check1() {
this.setTitle("체크박스 예제");
this.setSize(500, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
p = new JPanel(); p.setLayout(new FlowLayout());
JCheckBox cb1 = new JCheckBox("코알라");
JCheckBox cb2 = new JCheckBox("수국");
JCheckBox cb3 = new JCheckBox("튤립");
ButtonGroup bg = new ButtonGroup(); // 체크박스 여러개 중 하나만 선택되도록 설정
bg.add(cb1); bg.add(cb2); bg.add(cb3);
cb1.addItemListener(new ItemListener()
{
@Override
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange() == ItemEvent.SELECTED)
lbl.setIcon(img1);
}
}
);
cb2.addItemListener(new ItemListener()
{
@Override
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange() == ItemEvent.SELECTED)
lbl.setIcon(img2);
}
}
);
cb3.addItemListener(new ItemListener()
{
@Override
public void itemStateChanged(ItemEvent e) {
if(e.getStateChange() == ItemEvent.SELECTED)
lbl.setIcon(img3);
}
}
);
p.add(cb1); p.add(cb2); p.add(cb3);
p.add(lbl);
this.setContentPane(p); // 컨텐츠를 프레임에 부착
this.setVisible(true);
}
public static void main(String[] args) {
new Check1();
}
}
'IT > JAVA' 카테고리의 다른 글
[JAVA/자바] 액션리스너(ActionListener) 예제 (0) | 2017.05.30 |
---|---|
[JAVA/자바] 체크박스(CheckBox) 예제 - 2 (0) | 2017.05.30 |
[JAVA/자바] 텍스트 문자열 예제 (JTextField / JTextArea) (0) | 2017.05.30 |
[JAVA/자바] JMenuBar 를 이용한 간단한 예제 (0) | 2017.05.30 |
[JAVA/자바] 플로우레이아웃(FlowLayout) / 액션리스너(ActionListener) 를 이용한 간단한 GUI 예제 (0) | 2017.05.30 |