![](/img/trans.png)
[英]How do I create a Java Swing JTable with header as first column, not as first row?
[英]How do I prevent a Java Swing JTable column from being sorted when the user click on the header?
我有一个包含几列的JTable。 我想使某些列无法排序。 我该怎么做? 我一直使用Java 1.4,因此不能使用TableRowSorter,因为直到1.6才引入TableRowSorter。
仅将RowSorter
应用于所需的列
(例如,只有pseudo_code,所有内容都进行了硬编码,例如,必须覆盖ColumnModel中的列)
if (column >= 0 && column < getModelWrapper().getColumnCount()
&& isSortable(column)) {
与
if (column >= 0 && column <=1 /*getModelWrapper().getColumnCount()*/
&& isSortable(column)) {
在public void toggleSortOrder(int column) {
那么第二列是不可排序的
将JTable上的rowSorter设置为null。 参见http://download.java.net/jdk7/archive/b123/docs/api/javax/swing/JTable.html#setRowSorter(javax.swing.RowSorter )
如果要排序而不是其他,则必须实现一个侦听器。 我用过这样的东西:
table.getTableHeader().addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
int col= table.getTableHeader().columnAtPoint(e.getPoint());
// column number col has been clicked -- sort if necessary,
// discard the event if sorting is not desired.
//
}
});
注意可以拖放行的表; 您可以使用
table.getTableHeader().setReorderingAllowed(false);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.