JList按字母顺序排列

时间:2011-04-05 14:15:07

标签: java swing

我有以下演示应用程序,它显示了一个值列表,但我需要能够 控制列表中元素的顺序。什么是最容易添加的方法?

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();
    }
}

5 个答案:

答案 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接口。