Button

예숑·2024년 1월 20일
0

JAVA - GUI

목록 보기
7/8
post-thumbnail

⭐JButton

→ 버튼을 생성해준다.

💜JCheckBox

→ 말 그대로 체크박스를 생성해준다.
→ 보통 여러 개의 체크박스가 있을 때, 그 중 복수개를 선택할 때 사용한다.
→ parameter 에 true 를 해주면 체크가 된 채로 나온다.

💜JRadioButton

→ 보통 여러 개의 선택지가 있을 때, 그 중 한 개를 선택할 때 사용한다.
→ ButtonGroup : 이를 이용해 집단으로 만들어준다.
(같은 버튼객체 그룹에 있는 애들은 하나만 선택 가능하다.)

💜JToggleButton

→ 버튼을 누르면 눌러진 상태로 유지, 다시 누르면 버튼이 나오는 것이다.

💜JComboBox<제네릭>

→ 복수 데이터를 받아서 화살표를 누르면 복수 데이터들이 나온다.
→ 예를 들어서 생년월일을 고를 때 사용한다.

💙예제로 한번 알아보기

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();
	}
}

0개의 댓글