Swing/FixedWidthColumn のバックアップ(No.28)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/FixedWidthColumn へ行く。
- 1 (2005-02-03 (木) 02:04:02)
- 2 (2005-04-13 (水) 06:43:43)
- 3 (2005-04-28 (木) 04:32:53)
- 4 (2005-05-27 (金) 02:28:53)
- 5 (2005-05-31 (火) 14:19:51)
- 6 (2005-06-08 (水) 03:21:00)
- 7 (2005-10-25 (火) 15:09:36)
- 8 (2006-01-20 (金) 19:27:07)
- 9 (2006-01-31 (火) 10:42:18)
- 10 (2006-02-27 (月) 15:55:21)
- 11 (2006-12-01 (金) 13:59:27)
- 12 (2007-04-04 (水) 13:04:16)
- 13 (2007-07-26 (木) 14:30:40)
- 14 (2008-11-10 (月) 15:36:25)
- 15 (2009-06-22 (月) 12:24:29)
- 16 (2009-10-29 (木) 16:31:19)
- 17 (2013-04-04 (木) 02:25:33)
- 18 (2013-05-27 (月) 15:34:16)
- 19 (2013-07-26 (金) 01:54:22)
- 20 (2013-08-20 (火) 14:22:57)
- 21 (2015-10-14 (水) 15:36:11)
- 22 (2016-01-12 (火) 17:56:23)
- 23 (2016-05-24 (火) 22:16:06)
- 24 (2016-05-31 (火) 14:57:03)
- 25 (2016-11-01 (火) 19:42:59)
- 26 (2017-11-02 (木) 15:32:16)
- 27 (2017-11-16 (木) 12:21:45)
- 28 (2019-07-09 (火) 19:25:07)
- 29 (2021-03-19 (金) 00:46:14)
- category: swing folder: FixedWidthColumn title: JTableのカラム幅を一部だけ固定する tags: [JTable, JTableHeader, TableColumn] author: aterai pubdate: 2004-02-02 description: JTableのヘッダでカラム幅を一部だけ固定します。 image:
概要
JTable
のヘッダでカラム幅を一部だけ固定します。
Screenshot
Advertisement
サンプルコード
//すべてのカラムヘッダの幅を変更不可に
//tableHeader.setResizingAllowed(false);
//JTable.AUTO_RESIZE_OFFで、あるカラムの幅を変更不可にしたい場合
//table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
//col.setPreferredWidth(50);
//col.setResizable(false);
//カラムの幅を変更不可にしたい場合
TableColumn col = table.getColumnModel().getColumn(0);
col.setMinWidth(50);
col.setMaxWidth(50);
View in GitHub: Java, Kotlin解説
上記のサンプルでは、一番最初のカラム幅が50px
で固定となるように、TableColumn#setMaxWidth(int)
、TableColumn#setMinWidth(int)
を使用しています。カーソルも変化しないようにする場合は、setResizable(false)
も一緒に指定します。
JTableHeader#setResizingAllowed(boolean)
を使うと、すべてのカラム幅が変更不可となるTableColumn#setResizable(boolean)
は、JTable#setAutoResizeMode(JTable.AUTO_RESIZE_OFF)
の場合のみ有効TableColumn#setMaxWidth(int)
、TableColumn#setMinWidth(int)
を使用して、カラム幅を固定すると、JTable.AUTO_RESIZE_OFF
でなくても有効
- カラム幅を
0
に固定して非表示する方法もある- 一時的にカラムを非表示にしたいが、
JTable#removeColumn(TableColumn)
、JTable#addColumn(TableColumn)
、JTable#moveColumn(TableColumn)
などで元の位置に戻すのが面倒な場合に使用できるが、Tabキーなどによるフォーカス移動が不正になってしまう
- 一時的にカラムを非表示にしたいが、
TableColumn col = table.getColumnModel().getColumn(1);
col.setMinWidth(0);
col.setMaxWidth(0);
各カラムの幅を固定するのではなく、JTable
を2
つ使用して(model
は1
つ)あるカラムを常に表示(スクロールで隠れないよう固定)する場合は、Fixed Column Table ≪ Java Tips Weblogや、JTableの列固定とソートなどを参照してください。
カラムの位置を固定してドラッグなどでの移動を禁止したい場合は、JTableのヘッダ入れ替えを禁止を参照してください。