Swing/CellEditor のバックアップの現在との差分(No.18)
TITLE:JTableのセルを編集不可にする
Posted by terai at 2004-06-14
JTableのセルを編集不可にする
JTableのセルを編集不可にします。- category: swing folder: CellEditor title: JTableのセルを編集不可にする tags: [JTable, TableModel, TableCellEditor] author: aterai pubdate: 2004-06-14T05:31:42+09:00 description: JTableのすべてのセルを編集不可にする方法をテストします。 image:
概要
JTable
のすべてのセルを編集不可にする方法をテストします。
- &jnlp;
- &jar;
- &zip;
Screenshot
Advertisement
#screenshot
サンプルコード
#spanend
#spanadd
* サンプルコード [#sourcecode]
#spanend
#spanadd
#code(link){{
#spanend
JTable table = new JTable(new DefaultTableModel() {
@Override
public boolean isCellEditable(int row, int column) {
@Override public boolean isCellEditable(int row, int column) {
return false;
}
});
解説
上記のサンプルは、以下の三種類の方法で、セルを編集不可にすることが出来ます。解説
上記のサンプルは以下の3
種類の設定でセルを編集不可にする方法をテストしています。
- isCellEditable return false
- テーブルモデルのTableModel#isCellEditable()メソッドが常にfalseを返すようにオーバーライドして、すべてのセルを編集不可にしています。
- setDefaultEditor(Object.class, null)
- 各カラムにセルエディタを設定しない、かつObject.classが使用するデフォルトセルエディタをnullにした場合も、すべてのセルを編集不可にすることができます。
-
Override TableModel#isCellEditable(...) { return false; }
- テーブルモデルの
TableModel#isCellEditable()
メソッドが常にfalse
を返すようにオーバーライドしてすべてのセルを編集不可に設定 -
JTable#isCellEditable()
メソッドをオーバーライドする方法もある- たとえば同じ
TableModel
を使用する2
つのJTable
で片方だけ編集不可にする設定が可能
- たとえば同じ
- テーブルモデルの
-
JTable#setDefaultEditor(Object.class, null);
- 各カラムにセルエディタを設定しない、かつ
Object.class
が使用するデフォルトセルエディタをnull
にすることですべてのセルを編集不可にするtable.setDefaultEditor(Object.class, null);
- 各カラムにセルエディタを設定しない、かつ
- setEnabled(false)
- JTable#setEnabled(false)してしまえば、すべてのセルでの編集を禁止することができますが、セルや行の選択なども不可能になってしまいます。
-
JTable#setEnabled(false)
-
JTable#setEnabled(false)
でセルや行の選択なども含めてすべてのセルでの編集を禁止するtable.setEnabled(false);
-
参考リンク
参考リンク
コメント
- セルや行の選択をしないのであれば、JTable#setFocusable(false)とJTable#setCellSelectionEnabled(false)を合わせて利用することでも編集不可にできるようです。こちらは編集不可というより、文字通りフォーカスしないといった感じですが。 -- shuna?
- なるほど。F2も含めてキー入力で編集開始できなくなる(マウスクリックでは可能?)ようですね。table.putClientProperty("JTable.autoStartsEdit", Boolean.FALSE);よりすこし強力といった所でしょうか。いつか、こちらからJTableでキー入力によるセル編集開始を禁止するに移動するかも。 -- terai
コメント
- セルや行の選択をしないのであれば、
JTable#setFocusable(false)
とJTable#setCellSelectionEnabled(false)
を合わせて利用することでも編集不可にできるようです。こちらは編集不可というより、文字通りフォーカスしないといった感じですが。 -- shuna- なるほど。F2も含めてキー入力で編集開始できなくなる(マウスクリックでは可能?)ようですね。
table.putClientProperty("JTable.autoStartsEdit", Boolean.FALSE);
よりすこし強力といった所でしょうか。いつか、こちらからJTableでキー入力によるセル編集開始を禁止するに移動するかも。 -- aterai
- なるほど。F2も含めてキー入力で編集開始できなくなる(マウスクリックでは可能?)ようですね。