Swing/TableFileList のバックアップ(No.10)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/TableFileList へ行く。
- 1 (2010-01-12 (火) 09:52:02)
- 2 (2010-08-25 (水) 18:41:45)
- 3 (2013-07-26 (金) 01:23:33)
- 4 (2013-08-17 (土) 00:25:22)
- 5 (2014-12-02 (火) 01:43:09)
- 6 (2016-02-23 (火) 14:17:33)
- 7 (2016-09-16 (金) 17:02:25)
- 8 (2017-10-29 (日) 13:46:02)
- 9 (2018-02-24 (土) 19:51:30)
- 10 (2019-05-04 (土) 21:39:58)
- 11 (2021-02-04 (木) 01:45:08)
- 12 (2024-03-30 (土) 23:35:00)
- category: swing
folder: TableFileList
title: JTableで文字列をクリックした場合だけセルを選択状態にする
tags: [JTable, TableCellRenderer]
author: aterai
pubdate: 2006-12-25T16:51:36+09:00
description: JTableの文字列以外の場所がクリックされた場合、そのセルが選択されないようにします。
image:
hreflang:
href: https://java-swing-tips.blogspot.com/2010/01/make-explorer-like-jtable-file-list.html lang: en
概要
JTable
の文字列以外の場所がクリックされた場合、そのセルが選択されないようにします。
Screenshot
Advertisement
サンプルコード
//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
列目の文字列以外がクリックされても選択されないように変更WindowsLookAndFeel
のみ?