JTableで文字列をクリックした場合だけセルを選択状態にする
Total: 9360
, Today: 2
, Yesterday: 1
Posted by aterai at
Last-modified:
概要
JTable
の文字列以外の場所がクリックされた場合、そのセルが選択されないようにします。
Screenshot
Advertisement
サンプルコード
// @see SwingUtilities2.pointOutsidePrefSize(...)
private static Rectangle getCellRect2(JTable table, int row, int col) {
TableCellRenderer tcr = table.getCellRenderer(row, col);
Object value = table.getValueAt(row, col);
Component cell = tcr.getTableCellRendererComponent(
table, value, false, false, row, col);
Dimension itemSize = cell.getPreferredSize();
Rectangle cellBounds = table.getCellRect(row, col, false);
cellBounds.width = itemSize.width;
return cellBounds;
// FontMetrics fm = table.getFontMetrics(table.getFont());
// Object o = table.getValueAt(row, col);
// int w = fm.stringWidth(o.toString()) + 16 + 2 + 2;
// Rectangle rect = table.getCellRect(row, col, true);
// rect.setSize(w, rect.height);
// return rect;
}
View in GitHub: Java, Kotlin解説
0
列目のName
カラムのセル中にあるアイコンと文字列の上でクリックされた場合のみ、そのセルが選択されるよう設定JTable.putClientProperty("Table.isFileList", Boolean.TRUE)
を設定して0
列目の文字列以外がクリックされても選択されないように変更Table.isFileList
はWindowsLookAndFeel
のみ有効?