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来保存元素。下面是一个实现:()。或者使用我制作的这个快速分叉来添加泛型:如果你不关心选择状态…;-)