我有以下演示应用程序,它显示了一个值列表,但我需要能够 控制列表中元素的顺序。什么是最容易添加的方法?
package demo;
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.ListModel;
public class JListOrder {
public JListOrder()
{
JFrame frame = new JFrame("JListOrder");
DefaultListModel model = new DefaultListModel();
model.addElement("z");
model.addElement("Z");
model.addElement("a");
model.addElement("A");
model.addElement("C");
model.addElement("c");
model.addElement("b");
model.addElement("B");
JList list = new JList(model);
frame.add(list);
frame.setSize(200,200);
frame.setVisible(true);
}
public static void main(String[] args) {
new JListOrder();
}
}
答案 0 :(得分:7)
最简单的方法是使用支持JXList排序/过滤的SwingX,方法与核心表排序/过滤相同:
JXList list = new JXList(model);
list.setAutoCreateRowSorter(true);
list.toggleSortOrder();
答案 1 :(得分:3)
如果您的意思是,您需要在运行时控制其元素的顺序,而其项目正在更改,那么您可能需要为JList实现自己的SortedListModel。可以找到oracle的一篇好文章here。
答案 2 :(得分:2)
如果您不希望在将对象添加到JList之前对对象进行排序的麻烦,您可以编写/使用ListModel实现,使它们已经为您排序。参见例如this implementation
正如我在几乎所有与JLists / JTable相关的问题中所说的那样,请查看GlazedLists。它完成了关于排序和过滤的所有想象。
答案 3 :(得分:0)
DefaultListModel
按照添加的顺序显示元素。您可以按顺序添加元素,这就是它们的显示方式。
答案 4 :(得分:0)
您可以使用Sorted Combo Box Model。我知道是“组合框”,但它也实现了List接口。