Swing/FixedWidthColumn のバックアップ(No.14)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - 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のカラム幅を一部だけ固定する
JTableのカラム幅を一部だけ固定する
Posted by terai at 2004-02-02
概要
JTableのヘッダでカラム幅を一部だけ固定します。
- &jnlp;
- &jar;
- &zip;
#screenshot
サンプルコード
//すべてのヘッダカラムの幅を変更不可に
//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);
//0に固定すると表示されない列が作成できる
//col = table.getColumnModel().getColumn(1);
//col.setMinWidth(0);
//col.setMaxWidth(0);
解説
- JTableHeader の setResizingAllowed(booelan)を使うと、すべてのカラム幅が変更不可になってしまう
- TableColumnのsetResizable(boolean)は、JTable#setAutoResizeMode(JTable.AUTO_RESIZE_OFF)の場合でなければならない
上記のような条件でも、setMaxWidth(int)、setMinWidth(int)を使用すると、カラム幅を固定することができます。
サンプルでは、一番最初のカラム幅が50ptで固定しています。カーソルも変化しないようにする場合は、setResizable(false)も一緒に指定します。
また、以下のようにカラム幅を0に固定すると、表示されない列を作成することができます。一時的にカラムを隠したいけど、removeColumn(col)、addColumn(col)、moveColumn(…)のように元の場所に戻すのが面倒なときに使えるかもしれません。
TableColumn col = table.getColumnModel().getColumn(1);
col.setMinWidth(0);
col.setMaxWidth(0);
各カラムの幅を固定するのではなく、表を2つ使用してあるカラムを常に表示(スクロールで隠れないよう固定)しておく場合は、Fixed Column Exampleを参照してください。
カラムの位置を固定してドラッグなどでの移動を禁止したい場合は、JTableのヘッダ入れ替えを禁止を参照してください。