자바(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 |