반응형
자바(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)' 카테고리의 다른 글
자바(Java) 클래스와 함수의 재정의를 방비하는 final 키워드에 대해 알아보자 (0) | 2020.08.16 |
---|---|
자바(Java) 자료구조 클래스 LinkedList 구현하는 방법 (0) | 2020.06.27 |
[Java] 자바 다형성, 오버라이딩(Overriding), 오버로딩(Overloading) (3) | 2020.06.07 |
자바(Java) AWT – Button 컨트롤 사용법과 예제 (1) | 2020.06.04 |
JSP Servlet 구현하기, POST 로 값 전송하기 (0) | 2019.11.16 |
자바(Java) static 문법에 대해서 알아 봅니다. (0) | 2019.11.02 |
자바(Java) 두 수에서 최대공약수 찾는 방법, BigInteger (0) | 2019.10.23 |
프로그램 플로우차트, UML , 데이터베이스 테이블 설계를 할 수 있는 사이트 (0) | 2019.07.18 |