다음은 combox 상자의 항목을 정렬하는 방법입니다. Option
의 순서를 알려주는 추가 필드를 추가해야 할 수도 있습니다.
첫째는 Comparable
인터페이스를 Comparator
를 사용하거나 구현 중 하나에 의해 Option
정렬, 다음
전체 예제
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class SortCombo {
JComboBox comboBox;
JButton sortButton;
List<Option> options;
public SortCombo() {
options = createOptions();
comboBox = new JComboBox(options.toArray());
sortButton = new JButton("Sort");
sortButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Collections.sort(options);
comboBox.removeAllItems();
for (Option s : options) {
comboBox.addItem(s);
}
}
});
JFrame frame = new JFrame("Sort ComboBox");
frame.add(comboBox, BorderLayout.CENTER);
frame.add(sortButton, BorderLayout.SOUTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
public List<Option> createOptions() {
List<Option> list = new ArrayList<>();
list.add(new Option("John", 1));
list.add(new Option("Sean", 2));
list.add(new Option("Jake", 3));
list.add(new Option("Mike", 4));
list.add(new Option("Abby", 5));
list.add(new Option("Paul", 6));
list.add(new Option("Daniel", 7));
list.add(new Option("Chris", 8));
return list;
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new SortCombo();
}
});
}
}
class Option implements Comparable<Option> {
private String name;
private int id;
public Option(String name, int id) {
this.name = name;
this.id = id;
}
@Override
public int compareTo(Option option) {
return this.name.compareTo(option.name);
}
@Override
public String toString() {
return name + " {" + id + "}";
}
}