Swing/FixedWidthColumn のバックアップ(No.23)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - 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)
- title: JTableのカラム幅を一部だけ固定する tags: [JTable, JTableHeader, TableColumn] author: aterai pubdate: 2004-02-02 description: JTableのヘッダでカラム幅を一部だけ固定します。
概要
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(booelan)
を使うと、すべてのカラム幅が変更不可となる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のヘッダ入れ替えを禁止を参照してください。