JTableセル値変更のイベントに反応するために使用できるリスナーはどれですか?私はTableModelListenerを使用しようとしましたが、何か間違っているか、このリスナーはセルの内容を変更することに反応しません。JTableセル値変更リスナー
私は、セルの内容を変更するか、またはフォーカスを失うセルにする必要があります。これを行う最善の方法は何ですか?ありがとう。
JTableセル値変更のイベントに反応するために使用できるリスナーはどれですか?私はTableModelListenerを使用しようとしましたが、何か間違っているか、このリスナーはセルの内容を変更することに反応しません。JTableセル値変更リスナー
私は、セルの内容を変更するか、またはフォーカスを失うセルにする必要があります。これを行う最善の方法は何ですか?ありがとう。
値の変更に反応する簡単な方法は、テーブルモデルをカスタマイズしてsetValueAt()
に反応させることです。
フォーカスが失われたときに "棒が"に編集されていることを確認したい場合は、これをテーブルで呼び出してください。
table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
class extends JTable {
....ここで(コンストラクタ内)
addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
if ("tableCellEditor".equals(evt.getPropertyName())) {
if (isEditing())
processEditingStarted();
else
processEditingStopped();
}
}
});
...(端コンストラクタ)
protected void processEditingStopped() {
System.out.println("save " + editingRow + ":" + editingColumn);
}
protected void processEditingStarted() {
System.out.println("edit " + editingRow + ":" + editingColumn);
if (editRow > -1 && editColumn > -1)
oldValue = (String) model.getValueAt(editRow, editColumn);
}
}
詳細:http://tips4java.wordpress.com/2009/06/07/table-cell-listener/
モデルの実装(またはその使用法)に何か問題があります - 変更時に_always_に通知する必要があります。 TableModelListenerは行く方法です – kleopatra
実際、これが当てはまりました。テーブル更新メソッドの1つがモデルを置き換え、リスナが古いモデルにアタッチされました。見ていただきありがとうございます。ありがとうございました。 – celicni