Please Enable JavaScript!
Gon[ Enable JavaScript ]

자바(Java) AWT – Choice 컨트롤을 사용하여 콤보박스 구현하기

자바(JAVA)
반응형

자바(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) AWT – Choice 컨트롤을 사용하여 콤보박스 구현하기

 

반응형
Posted by 녹두장군1
,