Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按字母顺序排列_Java_Swing - Fatal编程技术网

Java 按字母顺序排列

Java 按字母顺序排列,java,swing,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() {

我有下面的演示应用程序,其中显示了一个值列表,但我需要能够 控制列表中元素的顺序。最简单的方法是什么

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

DefaultListModel
按元素添加的顺序显示元素。您可以按顺序添加元素,这就是它们的显示方式。

如果您的意思是,您需要在运行时控制其元素的顺序,而其项目正在更改,那么您可能需要为JList实现您自己的SortedListModel。oracle提供了一篇很好的文章。

如果您不想在将对象添加到JList之前对其进行排序,那么您可以编写/使用一个ListModel实现,让它们一直为您排序。见例


正如我在几乎所有与JLists/JTables相关的问题中所说的,请查看。它几乎可以实现您所能想象的排序和筛选功能。

最简单的方法是使用SwingX,它支持JXList的排序/筛选,与核心表排序/筛选的方式相同:

JXList list = new JXList(model);
list.setAutoCreateRowSorter(true);
list.toggleSortOrder();

您可以使用。我知道is说的是“组合框”,但它也实现了列表界面。

可能被认为是一篇不错的文章,但它的工作不可靠:因为总是使用这种装饰方法(JList不知道这一事实),很难获得正确的通知。在选择更改上执行任何操作时特别棘手:排序模型处理数据事件时,索引转换可能无效。严格来说,这违反了~insertElementAt(value,index)~-上的mutableComboxModel约定,我将其解释为~assertEquals(value,model.getElementAt(index))~(嗯..有什么方法可以格式化注释中的代码片段吗?帮助似乎说,~code~)不需要使用单独的库。只需扩展AbstractListModel并使用类似TreeSet的SortedSet来保存元素。下面是一个实现:()。或者使用我制作的这个快速分叉来添加泛型:如果你不关心选择状态…;-)