Daily coding
Java Basic : day 14 - AWT & SWING 10 : 체크박스와 라디오박스 본문
AWT & SWING 10
1. 체크박스
- 다중 선택이 필요한 곳
2. 라디오 버튼
- 1개만 선택 가능
- AWT에서 원래 지원이 안됐음(체크박스로 혼용해서 사용해야 함)
- Swing : JRadioButton
* 체크박스는 ItemListener 인터페이스 상속받아야 함!!!
* 체크박스 여러개 있을 때는 클래스에 상속받아 사용하는 것이 편함
* 하나 두개 일 때는 그냥 바로 new로 추가해서 오버라이딩 해도 됨.
package day15.Lecture01_AWT.test7;
import java.awt.Checkbox;
import java.awt.CheckboxGroup;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.ButtonGroup;
import javax.swing.JOptionPane;
import javax.swing.JRadioButton;
// 체크박스 + 라디오 버튼
public class WindowClass extends Frame implements WindowListener, ItemListener {
Checkbox cb1, cb2,cb3,cb4,cb5,cb6;
Label label1, label2;
JRadioButton rb; // 스윙소속에는 라디오 버튼 있음
public WindowClass() {
super("체크박스와 라디오버튼");
// cb1,cb2,c3 - 그룹1 (라디오버튼으로 사용할 것임)
// cb4, cb5 - 그룹2 (라디오버튼으로 사용할 것임0
// cb6 - 순수한 체크박스
// 그룹핑 : chexkboxGroup
CheckboxGroup cbg1 = new CheckboxGroup();
cb1 = new Checkbox("사과", cbg1, true);
// state : 체크한상태로 할건지 아닌지 (true/false)
cb2 = new Checkbox("배", cbg1, false);
// state : 체크한상태로 할건지 아닌지
cb3 = new Checkbox("파인애플", cbg1, false);
// state : 체크한상태로 할건지 아닌지
// 체크박스 그룹으로 묶으면 선택이 1개 밖에 안된다. ( = 라디오 버튼)
// 그룹2
CheckboxGroup cbg2 = new CheckboxGroup();
cb4 = new Checkbox("남성", cbg2, true);
cb5 = new Checkbox("여성", cbg2, true); // 둘다 true로 해두면 마지막 true만 남고 다 false로 바뀜
// cb6
cb6 = new Checkbox("exit");
label1 = new Label("label1");
label2 = new Label("label2");
// 창에 추가하기
add(cb1);
add(cb2);
add(cb3);
add(cb4);
add(cb5);
add(cb6);
add(label1);
add(label2);
// ItemListener을 추가해야 반응에 대한 액션이 나옴
cb1.addItemListener(this);
cb2.addItemListener(this);
cb3.addItemListener(this);
cb4.addItemListener(this);
cb5.addItemListener(this);
cb6.addItemListener(this);
// 레이아웃
setLayout(new FlowLayout()); // 옆으로 쭉 펼쳐놓는 레이아웃
// JRadioButton 소속의 라디오버튼
// 생성하기
JRadioButton jb1 = new JRadioButton("사과");
JRadioButton jb2 = new JRadioButton("배");
JRadioButton jb3 = new JRadioButton("귤");
// 1번 버튼 선택 : 중복 선택이 되어있을 경우 먼저 add한 버튼이 눌려있음
// 선택 안하면 아무것도 안눌려있음
jb1.setSelected(true);
// 라디오버튼 묶어줄 그룹 생성하고 add
ButtonGroup jb = new ButtonGroup();
jb.add(jb1);
jb.add(jb2);
jb.add(jb3);
// 라디오버튼을 현재 레이아웃에 추가
add(jb1);
add(jb2);
add(jb3);
// default 값
setBounds(0, 10, 640, 480);
setVisible(true);
addWindowListener(this);
}
@Override
public void itemStateChanged(ItemEvent e) {
Object obj = e.getSource();
Checkbox cb = (Checkbox) obj;
// 데이터 확인하기 (오브젝트끼리 확인하기)
if(obj == cb6) { // 완전한 체크박스 일 때 오브젝트끼리 비교하기
cb = (Checkbox) obj;
if(cb.getState()) { // 상태가 true일때 (체크했을때)
JOptionPane.showMessageDialog(null, "체크되었음");
System.exit(0);
}else{
JOptionPane.showMessageDialog(null, "체크 취소되었음");
}
}
// 라디오 박스 일때
else if( obj == cb1 || obj == cb2 || obj == cb3 ){
if(cb.getState()) { // 트루였을 때
label1.setText(cb.getLabel());
}
}
else {
if(cb.getState()) { // 트루였을 때
label2.setText(cb.getLabel());
}
}
// 메세지 박스 확인하기
// JOptionPane.showMessageDialog(null, "체크");
}
@Override
public void windowOpened(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}
@Override
public void windowClosed(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowIconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeiconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowActivated(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeactivated(WindowEvent e) {
// TODO Auto-generated method stub
}
}
'Language > Java_basic' 카테고리의 다른 글
Java Basic : day 14 - AWT & SWING : Example 1 숫자 더하기 (0) | 2019.12.08 |
---|---|
Java Basic : day 14 - AWT & SWING 11 : 콤보박스 Choice/ComboBox (0) | 2019.12.08 |
Java Basic : day 15 - AWT & SWING 9 : Table과 ScrollPane (0) | 2019.12.08 |
Java Basic : day 14 - AWT & SWING 8 : 마우스리스너 (0) | 2019.12.08 |
Java Basic : day 14 - AWT & SWING 7 : Window Change (0) | 2019.12.08 |