排序箭头表列标题

问题描述 投票:4回答:4

有人知道在对JTable列标题进行行排序时如何实现它的上下箭头吗?

我已经制定了自己的排序方式,它是通过使用mouseadapter监听鼠标单击来触发的,剩下的唯一内容是标题上的此类箭头的可见性 ...

还有一种方法可以轻松实现可排序的jtable吗?


我完成了所有排序,而我做不到的最后一件事是显示排序箭头。

我不想创建一个新对象,但是我没有找到是否有setEnableArrow之类的东西。

对此有任何想法吗?

java swing sorting jtable
4个回答
3
投票

您可以查看DefaultTableCellHeaderRenderer的源代码。在DefaultTableCellHeaderRenderer中,您会看到从何处检索这些图标(例如getTableCellRendererComponent)以及如何设置该图标(UIManager.getIcon("Table.ascendingSortIcon")


1
投票

这是实现排序的最简单方法:

setIcon(sortIcon);

0
投票

如果使用 MyModel model = new MyModel(); TableRowSorter<MyModel> sorter = new TableRowSorter<MyModel> (model); jTable1 = new javax.swing.JTable(); jTable1.setRowSorter(sorter); jTable1.setModel(model); 代替Jtable怎么办?

这些表的标题中有箭头可以对其进行排序,并且易于使用...值得尝试...


0
投票

我建议您不要搞乱JXtable。这个问题是,它就是默认值。每个LaF都应该创建该子类的一个子类,并在那里进行自己的渲染。我的建议是使用可以立即提供此功能的LaF。我认为TinyLaf可以做到这一点,但我不确定。您can子类DefaultTableCellHeaderRenderer,但是您可能会冒犯其他LaF的标题渲染。

那么该怎么做? Unicode可以解救!请参考DefaultTableCellHeaderRenderer页面并使用所需的内容。我选择了geometric shapes'\u25B2'三角形。但是然后我不得不隐藏可怕的Swing图标:

'\u25BC'

注意上面几行!它们将替换应用程序中可能所需的all JTables的图标。然后您应该可以看到类似的内容:

UIManager.put( "Table.ascendingSortIcon", new EmptyIcon() ); UIManager.put( "Table.descendingSortIcon", new EmptyIcon() );

空图标可以像:

Sorting icon unicode
© www.soinside.com 2019 - 2024. All rights reserved.