Java Swing JTextField をデータ モデルの String 属性にバインドしたいと考えています。
したがって、モデルのテキスト属性の変更をリッスンし、GUI (モデル->GUI) のテキストフィールドを更新するPropertyChangeListenerを使用したいと考えています。
もう一方の方向 (GUI->モデル)では、ユーザーがフィールド内のテキストを変更したときにモデルを更新する必要がある JTextField のドキュメントでDocumentListenerを使用したいと考えています。
そうすると、テキストフィールドのテキストを変更するとすぐにIllegalStateExceptionが発生します。
java.lang.IllegalStateException: Attempt to mutate in notification
at javax.swing.text.AbstractDocument.writeLock(AbstractDocument.java:1323)
at javax.swing.text.AbstractDocument.replace(AbstractDocument.java:644)
at javax.swing.text.JTextComponent.setText(JTextComponent.java:1693)
...
どうすればこれを回避できますか?
ところで: BeansBinding は、放棄されているため、実際には統計的な解決策ではありません。さらに、オブジェクトに書き込む前に、オブジェクトグラフでいくつかのオブジェクトをインスタンス化する必要があります。