我有JTable
並希望允許通過單擊表的空白部分來取消選擇所有行。迄今爲止,這工作得很好。然而,即使我打電話table.clearSelection();
表仍顯示先前啓用的小區周圍的邊框(請參閱細胞中的例子):JTable:在清除行選擇時清除單元格周圍的邊框
我想擺脫這個邊界,以及(它看起來特別不適合Mac的原生外觀和感覺,細胞突然變黑)。
完全正常的小例子代碼:
public class JTableDeselect extends JFrame {
public JTableDeselect() {
Object rowData[][] = { { "1", "2", "3" }, { "4", "5", "6" } };
Object columnNames[] = { "One", "Two", "Three" };
JTable table = new JTable(rowData, columnNames);
table.setFillsViewportHeight(true);
table.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
if (table.rowAtPoint(e.getPoint()) == -1) {
table.clearSelection();
}
}
});
add(new JScrollPane(table));
setSize(300, 150);
}
public static void main(String args[]) throws Exception {
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
new JTableDeselect().setVisible(true);
}
}
[編輯]嘗試添加這是在這裏提到table.getColumnModel().getSelectionModel().clearSelection();
。但是這也沒有幫助。
謝謝!簡單而有效! – qqilihq
@qqilihq,這假定表中的所有數據使用相同的渲染器。對於更一般的解決方案,除了清除選擇之外,還需要重置選擇模型的錨/索引索引。那麼你不需要自定義渲染器。 – camickr
@camickr:謝謝你。 1+給你的答案 –