以下是對combox框中的項目進行排序的方法。
首先請您Option
排序使用Comparator
或實現Comparable
接口要麼,然後
完整示例
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 + "}";
}
}