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