Swing/FixedWidthColumn のバックアップの現在との差分(No.15)
TITLE:JTableのカラム幅を一部だけ固定する
Posted by terai at 2004-02-02
JTableのカラム幅を一部だけ固定する
JTableのヘッダでカラム幅を一部だけ固定します。- category: swing folder: FixedWidthColumn title: JTableのカラム幅を一部だけ固定する tags: [JTable, JTableHeader, TableColumn] author: aterai pubdate: 2004-02-02 description: JTableのヘッダでカラム幅を一部だけ固定します。 image:
概要
JTable
のヘッダでカラム幅を一部だけ固定します。
- &jnlp;
- &jar;
- &zip;
Screenshot
Advertisement
#screenshot
サンプルコード
#spanend
#spanadd
// すべてのカラムヘッダの幅を変更不可に
#spanend
#spanadd
// tableHeader.setResizingAllowed(false);
#spanend
#spandel
**サンプルコード [#ycba6fb1]
#spanend
#spandel
#code{{
#spanend
#spandel
//すべてのヘッダカラムの幅を変更不可に
#spanend
#spandel
//tableHeader.setResizingAllowed(false);
#spanend
#spanadd
// JTable.AUTO_RESIZE_OFFで、あるカラムの幅を変更不可にしたい場合
#spanend
#spanadd
// table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
#spanend
#spanadd
// col.setPreferredWidth(50);
#spanend
#spanadd
// col.setResizable(false);
#spanend
#spandel
//JTable.AUTO_RESIZE_OFFで、あるカラムの幅を変更不可にしたい場合
#spanend
#spandel
//table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
#spanend
#spandel
//col.setPreferredWidth(50);
#spanend
#spandel
//col.setResizable(false);
#spanend
#spandel
#spanend
#spandel
//カラムの幅を変更不可にしたい場合
#spanend
#spanadd
// カラムの幅を変更不可にしたい場合
#spanend
TableColumn col = table.getColumnModel().getColumn(0);
col.setMinWidth(50);
col.setMaxWidth(50);
View in GitHub: Java, Kotlin解説
- JTableHeader の setResizingAllowed(booelan)を使うと、すべてのカラム幅が変更不可になってしまう
- TableColumnのsetResizable(boolean)は、JTable#setAutoResizeMode(JTable.AUTO_RESIZE_OFF)の場合でなければならない
解説
上記のサンプルでは、一番最初のカラム幅が50px
で固定となるように、TableColumn#setMaxWidth(int)
、TableColumn#setMinWidth(int)
を使用しています。カーソルも変化しないようにする場合は、setResizable(false)
も一緒に指定します。
上記のような条件でも、setMaxWidth(int)、setMinWidth(int)を使用すると、カラム幅を固定することができます。
-
JTableHeader#setResizingAllowed(boolean)
を使うと、すべてのカラム幅が変更不可となる -
TableColumn#setResizable(boolean)
は、JTable#setAutoResizeMode(JTable.AUTO_RESIZE_OFF)
の場合のみ有効 -
TableColumn#setMaxWidth(int)
、TableColumn#setMinWidth(int)
を使用して、カラム幅を固定すると、JTable.AUTO_RESIZE_OFF
でなくても有効
以下のようにカラム幅を0に固定すると、表示されない列を作成することができます。一時的にカラムを隠したいけど、removeColumn(col)、addColumn(col)、moveColumn(…)のように元の場所に戻すのが面倒なときに使えるかもしれません(ただし、タブキーなどによるフォーカス移動がおかしくなります)。
- カラム幅を
0
に固定して非表示する方法もある- 一時的にカラムを非表示にしたいが、
JTable#removeColumn(TableColumn)
、JTable#addColumn(TableColumn)
、JTable#moveColumn(TableColumn)
などで元の位置に戻すのが面倒な場合に使用できるが、Tabキーなどによるフォーカス移動が不正になってしまうTableColumn col = table.getColumnModel().getColumn(1); col.setMinWidth(0); col.setMaxWidth(0);
- 一時的にカラムを非表示にしたいが、
各カラムの幅を固定するのではなく、表を2つ使用してあるカラムを常に表示(スクロールで隠れないよう固定)しておく場合は、Fixed Column Table ≪ Java Tips Weblog、JTableの列固定とソートなどを参照してください。
- 各カラムの幅を固定するのではなく
JTable
を2
つ使用して(model
は1
つ)あるカラムを常に表示(スクロールで隠れないよう固定)する場合は、Fixed Column Table ≪ Java Tips Weblogや、JTableの列固定とソートなどを参照 - カラムの位置を固定してドラッグなどでの移動を禁止したい場合はJTableのヘッダ入れ替えを禁止を参照
- - カラムの位置を固定してドラッグなどでの移動を禁止したい場合は、JTableのヘッダ入れ替えを禁止を参照してください。