web-dev-qa-db-ja.com

Java JTable-1つの列のみを編集可能にする

JTableの1つの列を編集可能にする方法を考えていましたが、他の列は編集不可にする必要があります。

IsCellEditable()を上書きしましたが、これによりすべてのセルが編集不可に変更されます。事前にThnx。

16
user842479

isEditableまたはTableColumn and TableCellに対してTableColumnかどうかも設定できます

@Override
public boolean isCellEditable(int row, int col) {
     switch (col) {
         case 0:
         case 1:
             return true;
         default:
             return false;
      }
}
32
mKorbel

テーブルモデル をオーバーライドする

isCellEditable(int rowIndex, int columnIndex)は2つの引数を取り、必要な列に対してtrueを返しますか?

public boolean isCellEditable(int rowIndex, int columnIndex){
return columnIndex == 0; //Or whatever column index you want to be editable
}
20
EricR

これにより、列3と8には編集可能trueが設定され、その他の列にはfalseが設定されます。

DefaultTableModel model = new DefaultTableModel() {

            boolean[] canEdit = new boolean[]{
                    false, false, true, false, false,false,false, true
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit[columnIndex];
            }
};
11
arash

SwingXプロジェクトのJXTable/TableColumnExtには、テーブルごとおよび列ごとの編集可能性を構成するためのAPIがあります。

 // make the table completely read-only
 xTable.setEditable(false);
 // make a column read-only
 xTable.getColumnExt(index).setEditable(false);

Model.isCellEditableによって返されるものと比較して編集可能性を狭めることのみが可能であることに注意してください。つまり、編集可能なセルを読み取り専用にすることはできますが、その逆はできません。

6
kleopatra