次のようにインスタンス化されたモデルを持つ JTable があります。
TableModel ss = new DefaultTableModel(myArray[][], myHeaderArray[]);
配列が生成される場所。ただし、現時点ではまだセルを編集できます。どうすればこれを防ぐことができますか?
ありがとう!
次のようにインスタンス化されたモデルを持つ JTable があります。
TableModel ss = new DefaultTableModel(myArray[][], myHeaderArray[]);
配列が生成される場所。ただし、現時点ではまだセルを編集できます。どうすればこれを防ぐことができますか?
ありがとう!
JTable または DefaultTableModel を拡張し、isCellEditable(int row, int column)
メソッドをオーバーライドして、ユーザーが編集できないようにするセルに対して false を返します。
たとえば、ユーザーが 2 番目の列を変更できないようにする場合は、次のようにします。
@Override
public boolean isCellEditable(int row, int column) {
if (column == 1) {
return false;
} else {
return true;
}
}
mre のコメントによると、上記のメソッドは圧縮して次のように書き直すことができることに注意してください。
@Override
public boolean isCellEditable(int row, int column) {
return (column != 1);
}
ユーザーがセルを編集できないようにする場合は、このメソッドが常に false を返すようにします。
// anonymous inner class example
TableModel ss = new DefaultTableModel(myArray[][], myHeaderArray[]) {
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
};
サブクラス化するか、匿名バージョンを作成してDefaultTableModel
、メソッドをオーバーライドしますisCellEditable
。