|
자바(Java) AWT – Choice 컨트롤을 사용하여 콤보박스 구현하기 |
|
환경 : Eclipse Mars, Android 4.2.2 |
AWT 에서는 콤보박스 구현을 위해 Choice 컨트롤을 제공하고 있습니다. 이번예제에는 Choice 컨트롤에 값을 추가하고 삭제하는 기능을 구현해 보았습니다.
▶ Choice 컨트롤이 처음 로딩될 때 값을 넣기 위해 add() 함수를 사용합니다.
choice = new Choice();
panel.add(choice);
// 리스트에 값을 추가함
choice.add("Apple");
choice.add("Grapes");
choice.add("Mango");
choice.add("Peer");
▶ 값삭제 버튼을 클릭하게 되면 현재 선택된 것을
삭제하게 되는데 현재 선택한 값의 Index 는
getSelectedIndex() 로 알수 있습니다. 그리고
remove() 함수로 삭제하는 것이죠.
btnDelete = new Button("값삭제");
btnDelete.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
choice.remove(choice.getSelectedIndex());
}
});
▶ 값추가 버튼은 바로옆에 텍스트 박스에서 입력한 값을 Choice 컨트롤에 넣는 역할을 하게 되는데 넣은 값을 Choice 에서 보이게 만듭니다. Select() 함수가 그 역할을 하게 되는데 인수로 값들의 Index 값을 받습니다. 그런데 add() 로 추가하게 되면 제일아래에 붙으므로 Choice 에 들어가 있는 값들의 총합만 알고 있으면 계산이 되겠죠.
btnAdd = new Button("값추가");
btnAdd.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
choice.add(textField.getText());
// 추가한 값이 제일위에 보이게 합니다.
choice.select(choice.getItemCount() - 1);
}
});
▶ 다음은 선택한 값을 보기 위한 버튼입니다. 현재 선택한 값의 Index 를 알아오는 getSelectedIndex() 로 값을 알아온후 getItem() 으로 텍스트 값을 찾아오면 되는 것입니다.
// 상태정보창에 값 보여주기
showButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String data = "선택한 값보기 : "
+ choice.getItem(choice.getSelectedIndex());
statusLabel.setText(data);
}
});
▶ 이렇게 구현한 모든 기능들에 대한 전체 소스입니다. UI 부분에 대한 소스가 정리가 잘 안되어있는데 플러그인을 사용해서 추가하다 보니 그렇게 됬네요. 기능만 확인해 보시기 바랍니다.
import java.awt.Button;
import java.awt.Choice;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class AwtChoiceControl {
private Frame mainFrame;
private Label headerLabel;
private Label statusLabel;
private Panel controlPanel;
private Choice choice;
private TextField textField;
private Button btnAdd;
private Panel panel;
private Panel panelFun;
private Button btnDelete;
public AwtChoiceControl() {
prepareGUI();
}
public static void main(String[] args) {
AwtChoiceControl awtControlDemo = new AwtChoiceControl();
awtControlDemo.showTextField();
}
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 : Choice Control");
// 하단 상태값 라벨
statusLabel = new Label();
statusLabel.setText("Status Lable");
statusLabel.setAlignment(Label.CENTER);
statusLabel.setSize(350, 100);
controlPanel = new Panel();
mainFrame.add(headerLabel);
mainFrame.add(controlPanel);
mainFrame.add(statusLabel);
mainFrame.setVisible(true);
}
private void showTextField() {
controlPanel.setLayout(new GridLayout(2, 1, 0, 0));
panel = new Panel();
controlPanel.add(panel);
choice = new Choice();
panel.add(choice);
// 리스트에 값을 추가함
choice.add("Apple");
choice.add("Grapes");
choice.add("Mango");
choice.add("Peer");
Button showButton = new Button("보기");
panel.add(showButton);
btnDelete = new Button("값삭제");
btnDelete.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
choice.remove(choice.getSelectedIndex());
}
});
panel.add(btnDelete);
// 상태정보창에 값 보여주기
showButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String data = "선택한 값보기 : "
+ choice.getItem(choice.getSelectedIndex());
statusLabel.setText(data);
}
});
// Choice 에 값 추가하기
btnAdd = new Button("값추가");
btnAdd.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
choice.add(textField.getText());
// 추가한 값이 제일위에 보이게 합니다.
choice.select(choice.getItemCount() - 1);
}
});
panelFun = new Panel();
controlPanel.add(panelFun);
textField = new TextField();
textField.setColumns(10);
panelFun.add(textField);
panelFun.add(btnAdd);
mainFrame.setVisible(true);
}
}
▶ 위소스를 구현한 화면입니다. 보기 버튼은 상태값에 현재 선택한 값을 보여주는 것이며 값삭제는 현재 선택한 값을 삭제합니다. 그리고 값추가는 텍스트에 입력한 값을 Choice 에 추가하는 기능입니다.
'자바(JAVA)' 카테고리의 다른 글
| [Java] 자바 날짜 계산하는 다양한 방법, GregorianCalendar, SimpleDateFormat (5) | 2015.05.13 |
|---|---|
| [Java] 자바 구구단 출력하는 방법 (0) | 2015.05.11 |
| 자바 객체 직렬화 방법 ObjectInputStream, ObjectOutputStream (0) | 2015.05.10 |
| 자바(Java) The public type [class name] must be defined in its own file 오류 (0) | 2015.04.10 |
| 자바(Java) AWT – Canvas 컨트롤의 간단한 사용예제 (0) | 2015.01.14 |
| 자바(Java) AWT – TextArea 컨트롤을 사용하는 방법 (1) | 2014.12.10 |
| 자바(Java) AWT – TextField 컨트롤 이용하는 방법과 예제 (2) | 2014.12.03 |
| 자바(Java) AWT – List 컨트롤 구현 방법과 예제 (0) | 2014.11.30 |

