JTableの1つの列を編集可能にする方法を考えていましたが、他の列は編集不可にする必要があります。
IsCellEditable()を上書きしましたが、これによりすべてのセルが編集不可に変更されます。事前にThnx。
isEditable
またはTableColumn and TableCell
に対してTableColumn
かどうかも設定できます
@Override
public boolean isCellEditable(int row, int col) {
switch (col) {
case 0:
case 1:
return true;
default:
return false;
}
}
テーブルモデル をオーバーライドする
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
}
これにより、列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];
}
};
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によって返されるものと比較して編集可能性を狭めることのみが可能であることに注意してください。つまり、編集可能なセルを読み取り専用にすることはできますが、その逆はできません。