자바(Java) AWT – List 컨트롤 구현 방법과 예제 |
환경 : Eclipse Mars, Android 4.2.2, JDK 1.7 |
List 컨트롤은 여러 데이터를 관리할 때 쓰입니다. 컨트롤에 데이터를 넣고 빼는 방법과 멀티로 선택해서 값을 가져오는 방법에 대해 알아봅니다.
▼ 이번예제에서는 하나만 선택할수 있는 리스트와 멀티로 선택할수 있는 리스트 두개 입니다. 싱글리스트객체를 생성할때는 생성자 함수에 리스트 크기와 false 넘기면 됩니다. 그에 비해 멀리선택 리스트는 true 를 넘깁니다.
final List fruitList = new List(4, false); fruitList.add("감자"); fruitList.add("고구마"); fruitList.add("보리"); fruitList.add("배추"); final List vegetableList = new List(4, true); vegetableList.add("감"); vegetableList.add("배"); vegetableList.add("사과"); vegetableList.add("수박");
▼ 첫번째 버튼은 선택한 데이터의 값이 어떤 것인지 알아보는 것입니다. 싱글리스트는 getSelectedIndex() 함수를 이용해 리스트에서 선택한 데이터의 Index 값입니다. 이 Index 값을 리턴받아 getItem() 함수의 인수로 넘기면 텍스트 값을 가져올수 있습니다.
showButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String data = "첫번째 선택한값 : " + fruitList.getItem( fruitList.getSelectedIndex()); data += ", 두번째 선택한값 : "; for (String vegetable : vegetableList.getSelectedItems()) { data += vegetable + " "; } statusLabel.setText(data); } });
▼ 이벤트를 가져오기 위해서는 리스트컨트롤의 addActionListener() 함수에 ActionListener 객체를 등록해야 합니다. 리스트 컨트롤에 등록하는 ActionListener 객체의 기본함수인 actionPerformed() 입니다. 이함수에 리스트에서 선택했을 때 진행할 작업의 내용을 넣으면 됩니다.
멀티리스트에서 선택한 값을 가져오기 위해서는 for 문을 돌려야 합니다. getSelectedItems() 으로 String[] 배열을 리턴받아 하나씩 문자열로 만들면 되는 것이죠.
data += ", 두번째 선택한값 : "; for (String vegetable : vegetableList.getSelectedItems()) { data += vegetable + " "; }
▼ 이번에는 두번째 버튼의 삭제 기능입니다. 단일 선택 리스트 객체와 멀티 선택 리스트 객체 삭제방법은틀립니다. 단일선택은 getSelectedIndex() 으로 선택한 값의 Index 를 리턴하게 되고 멀티선택은 getSelectedIndexes() 함수로 여러 개 선택한 값들을 배열로 받게 됩니다. 삭제는 동일하게 remove() 함수로 합니다.
deleteButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // 단일 리스트 삭제 fruitList.remove(fruitList.getSelectedIndex()); // 멀티 선택 리스트 삭제 int delCount = 0; for (int pos : vegetableList.getSelectedIndexes()) { vegetableList.remove(pos - delCount); delCount++; } } });
▼ 이렇게 멀티와 단일로 선택할수 있는 리스트 컨트롤에 대한 전체 소스 값입니다.
import java.awt.Button; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.GridLayout; import java.awt.Label; import java.awt.List; import java.awt.Panel; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class AwtListControl { private Frame mainFrame; private Label headerLabel; private Label statusLabel; private Panel controlPanel, buttonPanel; public AwtListControl() { prepareGUI(); } public static void main(String[] args) { AwtListControl awtControlDemo = new AwtListControl(); awtControlDemo.showList(); } private void prepareGUI() { // Frame 에 대한 셋팅 mainFrame = new Frame("Java AWT 샘플"); mainFrame.setSize(400, 400); mainFrame.setLayout(new GridLayout(4, 1)); mainFrame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent windowEvent) { System.exit(0); } }); // 상단에 있는 라벨 headerLabel = new Label(); headerLabel.setAlignment(Label.CENTER); headerLabel.setText("Control Test : List"); // 하단 상태값 라벨 statusLabel = new Label(); statusLabel.setText("Status Lable"); statusLabel.setAlignment(Label.CENTER); statusLabel.setSize(350, 100); controlPanel = new Panel(); controlPanel.setLayout(new FlowLayout()); buttonPanel = new Panel(); buttonPanel.setLayout(new FlowLayout()); mainFrame.add(headerLabel); mainFrame.add(controlPanel); mainFrame.add(buttonPanel); mainFrame.add(statusLabel); mainFrame.setVisible(true); } private void showList() { final List fruitList = new List(4, false); fruitList.add("감자"); fruitList.add("고구마"); fruitList.add("보리"); fruitList.add("배추"); final List vegetableList = new List(4, true); vegetableList.add("감"); vegetableList.add("배"); vegetableList.add("사과"); vegetableList.add("수박"); Button showButton = new Button("선택한값보기"); Button deleteButton = new Button("선택한삭제"); showButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String data = "첫번째 선택한값 : " + fruitList.getItem( fruitList.getSelectedIndex()); data += ", 두번째 선택한값 : "; for (String vegetable : vegetableList.getSelectedItems()) { data += vegetable + " "; } statusLabel.setText(data); } }); deleteButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // 단일 리스트 삭제 fruitList.remove(fruitList.getSelectedIndex()); // 멀티 선택 리스트 삭제 int delCount = 0; for (int pos : vegetableList.getSelectedIndexes()) { vegetableList.remove(pos - delCount); delCount++; } } }); controlPanel.add(fruitList); controlPanel.add(vegetableList); buttonPanel.add(showButton); buttonPanel.add(deleteButton); mainFrame.setVisible(true); } }
▼ 아래는 소스를 실행했을 때 화면입니다. 왼쪽은 단일 선택 리스트이며 오른쪽은 멀티선택 리스트입니다. 선택해서 [선택한값보기] 를 누르게 되면 아래에 선택한 값들에 대해 표시가 됩니다.
'자바(JAVA)' 카테고리의 다른 글
자바(Java) AWT – Choice 컨트롤을 사용하여 콤보박스 구현하기 (0) | 2015.01.21 |
---|---|
자바(Java) AWT – Canvas 컨트롤의 간단한 사용예제 (0) | 2015.01.14 |
자바(Java) AWT – TextArea 컨트롤을 사용하는 방법 (1) | 2014.12.10 |
자바(Java) AWT – TextField 컨트롤 이용하는 방법과 예제 (2) | 2014.12.03 |
자바(Java) AWT – Checkbox 컨트롤 사용법과 예제 (4) | 2014.11.27 |
자바(Java) 웹페이지에 접속해서 html 소스 긁어 오기위한 방법 (2) | 2014.11.20 |
자바스크립트(javascript) 배열로 구성하여 input 객체에 넣고 POST 넘겼을때 (4) | 2014.09.18 |
웹페이지에서 구글맵 구현 (0) | 2014.02.25 |