3

次のようにインスタンス化されたモデルを持つ JTable があります。

TableModel ss = new DefaultTableModel(myArray[][], myHeaderArray[]);

配列が生成される場所。ただし、現時点ではまだセルを編集できます。どうすればこれを防ぐことができますか?

ありがとう!

4

2 に答える 2

5

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;
    }
};
于 2012-03-22T22:35:38.517 に答える
2

サブクラス化するか、匿名バージョンを作成してDefaultTableModel、メソッドをオーバーライドしますisCellEditable

于 2012-03-22T22:36:39.520 に答える