Please Enable JavaScript!
Gon[ Enable JavaScript ]

자바(Java) AWT – CheckboxGroup 이용해서 옵션기능구현

자바(JAVA)
반응형

자바(Java) AWT – CheckboxGroup 이용해서 옵션기능구현

 

환경 :  Eclipse Mars, Android 4.2.2

 

Checkbox 를 그룹 지으면 옵션 박스가 됩니다. AWT 에서는 옵션박스가 따로 없습니다. 옵션기능은 여러 개의 옵션박스중에 하나만 선택하게 해주는 기능입니다. 아래 샘플은 CheckboxGroup Checkbox 를 이용해서 옵션 박스를 구현한 것입니다.

 

옵션기능을 구현하기 위해 이전에 Checkbox 를 구현한 샘플을 이용하였습니다. 내용은 거의 비슷합니다. 먼저 Checkbox 컨트롤 객체를 생성할떄 생성자에 CheckboxGroup 객체를 인수로 넘기게 됩니다. 그리고 마지막 인수로 체크를 할것인지 결정하는 것이죠. 옵션박스니까 3개중에 하나만 True 가 되야 겠죠. 

CheckboxGroup chkGroup = new CheckboxGroup();

Checkbox chk1 = new Checkbox("바나나", chkGroup, true);
Checkbox chk2 = new Checkbox("감자", chkGroup, false);
Checkbox chk3 = new Checkbox("고구마", chkGroup, false);

 

이벤트 함수는 Checkbox 에서 구현했던 것과 동일합니다. addItemListener() 함수의 인수로 ItemListener 객체를 넘기면 되는 것입니다. 

chk1.addItemListener(new ItemListener() {
	public void itemStateChanged(ItemEvent e) {
		statusLabel.setText("바나나 Checkbox: " + "checked");
	}
});

chk2.addItemListener(new ItemListener() {
	public void itemStateChanged(ItemEvent e) {
		statusLabel.setText("감자 Checkbox: " + "checked");
	}
});

chk3.addItemListener(new ItemListener() {
	public void itemStateChanged(ItemEvent e) {
		statusLabel.setText("고구마 Checkbox: " + "checked");
	}
});

 

마지막에 Panel 객체에 위에서 만든 Checkbox 객체를 추가합니다. 그리고 Frame setVisible() 함수를 이용해 화면에서 보이게 합니다. 

controlPanel.add(chk1);
controlPanel.add(chk2);
controlPanel.add(chk3);

mainFrame.setVisible(true);

 

아래는 CheckboxGroup 을 이용해서 옵션박스를 구현한 AWT 전체 소스입니다. 

import java.awt.Checkbox;
import java.awt.CheckboxGroup;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Panel;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class AwtCheckboxControl {
	private Frame mainFrame;
	private Label headerLabel;
	private Label statusLabel;
	private Panel controlPanel;

	public AwtCheckboxControl() {
		prepareGUI();
	}

	public static void main(String[] args) {
		AwtCheckboxControl awtControlDemo = new AwtCheckboxControl();
		awtControlDemo.showCheckbox();
	}

	private void prepareGUI() {
		// Frame 에 대한 셋팅
		mainFrame = new Frame("Java AWT 샘플");
		mainFrame.setSize(400, 400);
		mainFrame.setLayout(new GridLayout(3, 1));
		mainFrame.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent windowEvent) {
				System.exit(0);
			}
		});

		// 상단에 있는 라벨
		headerLabel = new Label();
		headerLabel.setAlignment(Label.CENTER);
		headerLabel.setText("Control Test : CheckboxGroup");

		// 하단 상태값 라벨
		statusLabel = new Label();
		statusLabel.setText("Status Lable");
		statusLabel.setAlignment(Label.CENTER);
		statusLabel.setSize(350, 100);

		controlPanel = new Panel();
		controlPanel.setLayout(new FlowLayout());

		mainFrame.add(headerLabel);
		mainFrame.add(controlPanel);
		mainFrame.add(statusLabel);
		mainFrame.setVisible(true);
	}

	private void showCheckbox() {

		CheckboxGroup chkGroup = new CheckboxGroup();
		
		Checkbox chk1 = new Checkbox("바나나", chkGroup, true);
		Checkbox chk2 = new Checkbox("감자", chkGroup, false);
		Checkbox chk3 = new Checkbox("고구마", chkGroup, false);

		chk1.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e) {
				statusLabel.setText("바나나 Checkbox: " + "checked");
			}
		});

		chk2.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e) {
				statusLabel.setText("감자 Checkbox: " + "checked");
			}
		});

		chk3.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e) {
				statusLabel.setText("고구마 Checkbox: " + "checked");
			}
		});

		controlPanel.add(chk1);
		controlPanel.add(chk2);
		controlPanel.add(chk3);

		mainFrame.setVisible(true);
	}
}

 

위의 소스를 실행한 화면입니다. 체크박스가 아닌 옵션박스 임을 알수 있습니다. 

자바(Java) AWT – CheckboxGroup 이용해서 옵션기능구현


반응형
Posted by 녹두장군

댓글을 달아 주세요