有人知道在对JTable列标题进行行排序时如何实现它的上下箭头吗?
我已经制定了自己的排序方式,它是通过使用mouseadapter监听鼠标单击来触发的,剩下的唯一内容是标题上的此类箭头的可见性 ...
还有一种方法可以轻松实现可排序的jtable吗?
我完成了所有排序,而我做不到的最后一件事是显示排序箭头。
我不想创建一个新对象,但是我没有找到是否有setEnableArrow之类的东西。
对此有任何想法吗?
您可以查看DefaultTableCellHeaderRenderer
的源代码。在DefaultTableCellHeaderRenderer
中,您会看到从何处检索这些图标(例如getTableCellRendererComponent
)以及如何设置该图标(UIManager.getIcon("Table.ascendingSortIcon")
)
这是实现排序的最简单方法:
setIcon(sortIcon);
如果使用 MyModel model = new MyModel();
TableRowSorter<MyModel> sorter = new TableRowSorter<MyModel> (model);
jTable1 = new javax.swing.JTable();
jTable1.setRowSorter(sorter);
jTable1.setModel(model);
代替Jtable怎么办?
这些表的标题中有箭头可以对其进行排序,并且易于使用...值得尝试...
我建议您不要搞乱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() );
空图标可以像: