1
添加以下代码作为一个监听JTableHeader的:JTable中选择所有轮班行
header.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
JTableHeader header = (JTableHeader) e.getSource();
JTable table = header.getTable();
TableColumnModel columnModel = table.getColumnModel();
int vci = columnModel.getColumnIndexAtX(e.getX());
int mci = table.convertColumnIndexToModel(vci);
if (mci == targetColumnIndex) {
TableColumn column = columnModel.getColumn(vci);
Object v = column.getHeaderValue();
boolean b = Status.DESELECTED.equals(v) ? true : false;
TableModel m = table.getModel();
for (int i = 0; i < m.getRowCount(); i++) m.setValueAt(b, i, mci);
column.setHeaderValue(b ? Status.SELECTED : Status.DESELECTED);
//header.repaint();
}
}
});
如果我手动选择多个单元中的一个,然后如果单击ckeckAll头,该代码执行,然后将视觉行的顺序正在改变,所选择的跳转到底部/顶部。有任何想法吗?
我可以以某种方式禁用初始,排序吗?或者如果没有,还有其他的方法来停止排序? – Bober02 2012-08-06 17:35:50
我已经更新了我的答案,我从来没有这样做过,但我绝对肯定它可能。 – 2012-08-06 17:44:41