Swing/CellEditor のバックアップの現在との差分(No.11)
TITLE:JTableのセルを編集不可にする
JTableのセルを編集不可にする
編集者:Terai Atsuhiro~
作成日:2004-06-14
更新日:2021-11-03 (水) 02:26:04
概要
JTable
のすべてのセルを編集不可にする方法をテストします。
Screenshot
Advertisement
概要
JTableのセルを編集不可にします。#screenshot
サンプルコード
#spanend
TestModel model = new TestModel() {
public boolean isCellEditable(int row, int column) {
return false;
}
};
JTable jtable = new JTable(model);
#spanadd
* サンプルコード [#sourcecode]
#spanend
#spanadd
#code(link){{
#spanend
#spanadd
JTable table = new JTable(new DefaultTableModel() {
#spanend
@Override public boolean isCellEditable(int row, int column) {
return false;
}
#spanadd
});
#spanend
- &jnlp;
- &jar;
- &zip;
解説
テーブルモデルのメソッドisCellEditable()が常にfalseを返すようにしてやると、すべてのセルが編集不可になります。解説
上記のサンプルは以下の3
種類の設定でセルを編集不可にする方法をテストしています。
以下のように、列がObject.classの時に使用するデフォルトセルエディタをnullにした場合でも、すべてのセルを編集不可にすることができます。
-
Override TableModel#isCellEditable(...) { return false; }
- テーブルモデルの
TableModel#isCellEditable()
メソッドが常にfalse
を返すようにオーバーライドしてすべてのセルを編集不可に設定 -
JTable#isCellEditable()
メソッドをオーバーライドする方法もある- たとえば同じ
TableModel
を使用する2
つのJTable
で片方だけ編集不可にする設定が可能
- たとえば同じ
- テーブルモデルの
-
JTable#setDefaultEditor(Object.class, null);
- 各カラムにセルエディタを設定しない、かつ
Object.class
が使用するデフォルトセルエディタをnull
にすることですべてのセルを編集不可にするjtable.setDefaultEditor(Object.class, null); #spanadd table.setDefaultEditor(Object.class, null); #spanend
- 各カラムにセルエディタを設定しない、かつ
-
JTable#setEnabled(false)
-
JTable#setEnabled(false)
でセルや行の選択なども含めてすべてのセルでの編集を禁止するjtable.setEnabled(false); #spanadd table.setEnabled(false); #spanend
-