jtableセルリスナーの理解に役立つ助けが必要です。JTableセルリスナーJAVA
私の問題は、セルに変更をキャッチする必要があることです。キャッチすると古い値と新しい値を取得する必要があります。
私が求めている理由は、私がDefaultTableModelでJTableを使用しているということです。
私はこれについての他の記事を見ましたが、実装しようとしているときに "String"の結果は得られません。ここで
は、私が使用しているものです:
table.addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
System.out.println(evt.getOldValue());
System.out.println(evt.getNewValue());
}
});
これは私が得るものです:
null
[email protected]
[email protected]
null
null
[email protected]
com.apple.laf.AquaImageFactory$SystemColorProxy[r=255,g=255,b=255]
com.apple.laf.AquaImageFactory$SystemColorProxy[r=0,g=0,b=0]
com.apple.laf.AquaImageFactory$SystemColorProxy[r=9,g=80,b=208]
com.apple.laf.AquaImageFactory$SystemColorProxy[r=202,g=202,b=202]
null
false
com.apple.laf.AquaImageFactory$SystemColorProxy[r=0,g=0,b=0]
com.apple.laf.AquaImageFactory$SystemColorProxy[r=255,g=255,b=255]
com.apple.laf.AquaImageFactory$SystemColorProxy[r=202,g=202,b=202]
com.apple.laf.AquaImageFactory$SystemColorProxy[r=9,g=80,b=208]
false
true
com.apple.laf.AquaImageFactory$SystemColorProxy[r=255,g=255,b=255]
com.apple.laf.AquaImageFactory$SystemColorProxy[r=0,g=0,b=0]
com.apple.laf.AquaImageFactory$SystemColorProxy[r=9,g=80,b=208]
com.apple.laf.AquaImageFactory$SystemColorProxy[r=202,g=202,b=202]
true
false
あなたが本当にすべきことは、 'DefaultTableModel'の' setValueAt'メソッドをオーバーライドすることです。これは、値が変更されたことを通知し、新しい値と古い値の両方にアクセスできるようにします。あなたは 'TableModelListener'を使ってみることができますが、新しい値を得るには – MadProgrammer
@MadProgrammer何を意味するのですか?オーバーライドアノテーションを使用して独自のメソッドを作成するには? – Ervinas34
...あなたは基本的なOOを理解していますか? 'DefaultTableModel'は' setValueAt'と呼ばれる 'TableModel'を介して移植された' AbstractTableModel'から継承されたメソッドを持っています。これは、あるパーティーがあるセルで値を変更したいときに呼び出されます。これは、古い値と新しい値の両方を取得するための唯一の(妥当な)場所です。 – MadProgrammer