[英]How do I prevent a Java Swing JTable column from being sorted when the user click on the header?
I have a JTable that has several columns. 我有一个包含几列的JTable。 I wanted to make some of the columns unsortable. 我想使某些列无法排序。 How do I do it? 我该怎么做? I am stuck using Java 1.4 so using TableRowSorter isn't an option since it wasn't introduced until 1.6. 我一直使用Java 1.4,因此不能使用TableRowSorter,因为直到1.6才引入TableRowSorter。
apply RowSorter
to the desired column(s) only 仅将RowSorter
应用于所需的列
(for example, only pseudo_code, everything is there hardcoded as example, have to override columns from ColumnModel) (例如,只有pseudo_code,所有内容都进行了硬编码,例如,必须覆盖ColumnModel中的列)
if (column >= 0 && column < getModelWrapper().getColumnCount()
&& isSortable(column)) {
with 与
if (column >= 0 && column <=1 /*getModelWrapper().getColumnCount()*/
&& isSortable(column)) {
in public void toggleSortOrder(int column) {
在public void toggleSortOrder(int column) {
then second column isn't sortable 那么第二列是不可排序的
Set the rowSorter on the JTable to null. 将JTable上的rowSorter设置为null。 See http://download.java.net/jdk7/archive/b123/docs/api/javax/swing/JTable.html#setRowSorter(javax.swing.RowSorter ) 参见http://download.java.net/jdk7/archive/b123/docs/api/javax/swing/JTable.html#setRowSorter(javax.swing.RowSorter )
If you want to sort some and not others, you'll have to implement a listener. 如果要排序而不是其他,则必须实现一个侦听器。 I've used something like this: 我用过这样的东西:
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.
//
}
});
Watch out for tables that can drag and drop rows; 注意可以拖放行的表; you can disable this with 您可以使用
table.getTableHeader().setReorderingAllowed(false);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.