→ 버튼을 생성해준다.
→ 말 그대로 체크박스를 생성해준다.
→ 보통 여러 개의 체크박스가 있을 때, 그 중 복수개를 선택할 때 사용한다.
→ parameter 에 true 를 해주면 체크가 된 채로 나온다.
→ 보통 여러 개의 선택지가 있을 때, 그 중 한 개를 선택할 때 사용한다.
→ ButtonGroup : 이를 이용해 집단으로 만들어준다.
(같은 버튼객체 그룹에 있는 애들은 하나만 선택 가능하다.)
→ 버튼을 누르면 눌러진 상태로 유지, 다시 누르면 버튼이 나오는 것이다.
→ 복수 데이터를 받아서 화살표를 누르면 복수 데이터들이 나온다.
→ 예를 들어서 생년월일을 고를 때 사용한다.
public class ButtonsEx extends JFrame{
private JCheckBox ch1;
private JCheckBox ch2;
private JCheckBox ch3;
private JRadioButton rbtn1;
private JRadioButton rbtn2;
private JToggleButton tbtn;
private JComboBox<String> cb;
public ButtonsEx(){
init();
setDisplay();
showFrame();
}
private void init(){
//true 하면 체크된 채로 나온다.
ch1 = new JCheckBox("A", true);
ch2 = new JCheckBox("B");
ch3 = new JCheckBox("C");
rbtn1 = new JRadioButton("male",new ImageIcon("male_off.png"));
rbtn1.setSelectedIcon(new ImageIcon("male_on.png"));
rbtn1.setHorizontalTextPosition(JRadioButton.CENTER);
rbtn2 = new JRadioButton("female",new ImageIcon("female_off.png"));
rbtn2.setSelectedIcon(new ImageIcon("female_on.png"));
rbtn2.setVerticalTextPosition(JRadioButton.BOTTOM);
ButtonGroup bg = new ButtonGroup();
bg.add(rbtn1);
bg.add(rbtn2);
tbtn = new JToggleButton("toggle");
String[] items = {"samsung","lg","apple","google","tesla"};
cb = new JComboBox<String>(items);
}
private void setDisplay(){
JPanel pnlNorth = new JPanel();
pnlNorth.add(ch1);
pnlNorth.add(ch2);
pnlNorth.add(ch3);
pnlNorth.setBorder(new TitledBorder(new LineBorder(Color.GRAY, 1), "JCheckBox"));
JPanel pnlCenter = new JPanel();
pnlCenter.add(rbtn1);
pnlCenter.add(rbtn2);
pnlCenter.setBorder(new TitledBorder(new EtchedBorder(EtchedBorder.RAISED), "JRadioButton"));
JPanel pnlSouth = new JPanel(new BorderLayout());
pnlSouth.add(cb, BorderLayout.NORTH);
pnlSouth.add(tbtn, BorderLayout.CENTER);
add(pnlNorth, BorderLayout.NORTH);
add(pnlCenter, BorderLayout.CENTER);
add(pnlSouth,BorderLayout.SOUTH);
}
private void showFrame(){
setTitle("buttons ex");
pack();
setLocation(200,200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new ButtonsEx();
}
}
public class MyButtonsEx extends JFrame {
private JRadioButton rbtn1;
private JRadioButton rbtn2;
private JComboBox<Integer> cb1;
private JComboBox<Integer> cb2;
private JComboBox<Integer> cb3;
private JCheckBox ch1;
private JCheckBox ch2;
private JCheckBox ch3;
private JCheckBox ch4;
private JCheckBox ch5;
private JCheckBox ch6;
private JButton btn1;
private JButton btn2;
public MyButtonsEx(){
init();
setDisplay();
showFrame();
}
private void init(){
rbtn1 = new JRadioButton("양력");
rbtn2 = new JRadioButton("음력");
ButtonGroup bg = new ButtonGroup();
bg.add(rbtn1);
bg.add(rbtn2);
ch1 = new JCheckBox("낮잠");
ch2 = new JCheckBox("서핑");
ch3 = new JCheckBox("게임");
ch4 = new JCheckBox("여행");
ch5 = new JCheckBox("공부");
ch6 = new JCheckBox("산책");
btn1 = new JButton("확인");
btn2 = new JButton("취소");
Integer[] year = new Integer[46];
for (int i=0; i<year.length;i++) {
year[i] = 1979 + i ;
}
Integer[] month = new Integer[12];
for (int i =0; i<month.length;i++) {
month[i] = i + 1 ;
}
Integer[] day = new Integer[31];
for (int i = 0; i<day.length;i++) {
day[i] = i + 1;
}
cb1 = new JComboBox<Integer>(year);
cb2 = new JComboBox<Integer>(month);
cb3 = new JComboBox<Integer>(day);
}
private void setDisplay(){
JPanel pnlNorth1 = new JPanel();
pnlNorth1.add(rbtn1);
pnlNorth1.add(rbtn2);
pnlNorth1.setBorder(new TitledBorder(new LineBorder(Color.BLACK, 1),"구분"));
JPanel pnlNorth2 = new JPanel();
pnlNorth2.add(cb1);
pnlNorth2.add(cb2);
pnlNorth2.add(cb3);
pnlNorth2.setBorder(new TitledBorder(new LineBorder(Color.BLACK, 1),"생년월일"));
JPanel pnlNorth = new JPanel(new BorderLayout());
pnlNorth.add(pnlNorth1,BorderLayout.NORTH);
pnlNorth.add(pnlNorth2,BorderLayout.CENTER);
JPanel pnlCenter = new JPanel(new GridLayout(2,3));
pnlCenter.add(ch1);
pnlCenter.add(ch2);
pnlCenter.add(ch3);
pnlCenter.add(ch4);
pnlCenter.add(ch5);
pnlCenter.add(ch6);
pnlCenter.setBorder(new TitledBorder(new LineBorder(Color.BLACK, 1),"취미"));
JPanel pnlSouth = new JPanel();
pnlSouth.add(btn1);
pnlSouth.add(btn2);
add(pnlNorth, BorderLayout.NORTH);
add(pnlCenter, BorderLayout.CENTER);
add(pnlSouth, BorderLayout.SOUTH);
}
private void showFrame(){
setTitle("MyButtonsEx");
pack();
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new MyButtonsEx();
}
}