TITLE:JTableのセルを編集不可にする

JTableのセルを編集不可にする

Posted by terai at 2004-06-14
  • category: swing folder: CellEditor title: JTableのセルを編集不可にする tags: [JTable, TableModel, TableCellEditor] author: aterai pubdate: 2004-06-14T05:31:42+09:00 description: JTableのすべてのセルを編集不可にする方法をテストします。 image: https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTIgUbMHLI/AAAAAAAAAS4/v0jIwB26ie4/s800/CellEditor.png

概要

JTableのすべてのセルを編集不可にする方法をテストします。

概要

JTableのセルを編集不可にします。
  • &jnlp;
  • &jar;
  • &zip;

#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);
      

コメント

参考リンク

コメント