[英]Disable JTable rowsorter for HeaderView
I am having 2 JTables
, one for displaying the rows and one for displaying the data: 我有2个JTables
,一个用于显示行,一个用于显示数据:
Problem: When the data table are sorted, also the rows are sorted: 问题:对数据表进行排序时,还将对行进行排序:
Is it possible to make the "RowHeaderView" table to not get sorted like the data table? 是否可以使“ RowHeaderView”表不像数据表那样进行排序?
public class SimpleJTableHeader extends JFrame {
public JTable table;
public SimpleJTableHeader() {
// CREATE A JTABLE
Object rowData[][] = { { "a" }, { "b" }, { "c" }, { "d" } };
Object columnNames[] = { "1" };
table = new JTable(rowData, columnNames);
table.setRowHeight(20);
table.setAutoCreateRowSorter(true);
JScrollPane scrollPane = new JScrollPane(table);
// ADD ROW NUMBERS TO THE TABLE
scrollPane.setRowHeaderView(getHeaderTable());
// SHOW TABLE
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(scrollPane, BorderLayout.CENTER);
frame.setSize(300, 150);
frame.setVisible(true);
}
public JTable getHeaderTable() {
final AbstractTableModel model = new AbstractTableModel() {
private static final long serialVersionUID = 1L;
@Override
public int getColumnCount() {
return 1;
}
@Override
public Object getValueAt(int row, int column) {
return table.convertRowIndexToModel(row);
}
@Override
public int getRowCount() {
return table.getRowCount();
}
};
JTable headerTable = new JTable(model);
headerTable.setPreferredScrollableViewportSize(new Dimension(40, 0));
headerTable.setRowHeight(20);
return headerTable;
}
public static void main(String args[]) {
new SimpleJTableHeader();
}
}
Thanks to mKorbel the new correct getHeaderTable method: 感谢mKorbel提供了新的正确的getHeaderTable方法:
public JTable getHeaderTable() {
DefaultTableModel model = new DefaultTableModel() {
private static final long serialVersionUID = 1L;
@Override
public int getColumnCount() {
return 1;
}
@Override
public boolean isCellEditable(int row, int col) {
return false;
}
@Override
public int getRowCount() {
return table.getRowCount();
}
@Override
public Class<?> getColumnClass(int colNum) {
switch (colNum) {
case 0:
return String.class;
default:
return super.getColumnClass(colNum);
}
}
};
JTable headerTable = new JTable(model);
for (int i = 0; i < table.getRowCount(); i++) {
headerTable.setValueAt((i + 1), i, 0);
}
headerTable.setPreferredScrollableViewportSize(new Dimension(40, 0));
headerTable.setRowHeight(20);
return headerTable;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.