Swing/TableFileList のバックアップの現在との差分(No.7)
- category: swing
folder: TableFileList
title: JTableで文字列をクリックした場合だけセルを選択状態にする
tags: [JTable, TableCellRenderer]
author: aterai
pubdate: 2006-12-25
pubdate: 2006-12-25T16:51:36+09:00
description: JTableの文字列以外の場所がクリックされた場合、そのセルが選択されないようにします。
image:
hreflang:
href: http://java-swing-tips.blogspot.com/2010/01/make-explorer-like-jtable-file-list.html href: https://java-swing-tips.blogspot.com/2010/01/make-explorer-like-jtable-file-list.html lang: en
概要
JTable
の文字列以外の場所がクリックされた場合、そのセルが選択されないようにします。
Screenshot
Advertisement
サンプルコード
#spandel
//SwingUtilities2.pointOutsidePrefSize(...)
#spanend
#spanadd
// @see SwingUtilities2.pointOutsidePrefSize(...)
#spanend
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);
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;
#spandel
// FontMetrics fm = table.getFontMetrics(table.getFont());
#spanend
#spandel
// Object o = table.getValueAt(row, col);
#spanend
#spandel
// int w = fm.stringWidth(o.toString()) + 16 + 2 + 2;
#spanend
#spandel
// Rectangle rect = table.getCellRect(row, col, true);
#spanend
#spandel
// rect.setSize(w, rect.height);
#spanend
#spandel
// return rect;
#spanend
// 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解説
上記のサンプルでは、Name
カラムのセル中にあるアイコンと文字列の上でクリックされた場合のみ、そのセルが選択されるようになっています。
-
0
列目のName
カラムのセル中にあるアイコンと文字列の上でクリックされた場合のみ、そのセルが選択されるよう設定 -
JTable.putClientProperty("Table.isFileList", Boolean.TRUE)
を設定して0
列目の文字列以外がクリックされても選択されないように変更-
Table.isFileList
はWindowsLookAndFeel
のみ有効?
-
-
JTable.putClientProperty("Table.isFileList", Boolean.TRUE)
で、0
列目の文字列以外がクリックされても選択されないように変更-
WindowsLookAndFeel
のみ?
-