私は次のようにJTextFieldでJGoodiesBindingを使用しています。
trigger = new Trigger();
PresentationModel<SpectralControlsModel> adapter = new PresentationModel<SpectralControlsModel>(model, trigger);
ValueModel valueModelStartingSampleJTextField = adapter.getBufferedModel("startingSample");
startingSampleJTextField = BasicComponentFactory.createLongField(valueModelStartingSampleJTextField);
setupValueModelListener(valueModelStartingSampleJTextField, startingSampleJTextField);
JTextFieldにkeyListenerがあり、「Enter」キーが押されたときにモデルにデータをコミットします。
問題は、JTextFieldに新しい数値を入力してEnterキーを押すと、trigger.triggerCommit()を呼び出しても、モデルが古い値を取得することです。新しい数値を入力してから別の数値をクリックし、JTextFieldにフォーカスを失い、再びフォーカスを取得すると、新しい値が期待どおりにモデルに表示されます。
問題を十分に明確に説明した場合はお知らせください。これは非常に奇妙な動作であり、問題の根底にある必要があります。ありがとうございます。
更新 私はこのJava2s.comJGoodiesの例に行き、次のコードを追加しました。
firstNameTextField.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
trigger.triggerCommit();
}
});
degbuggingをオンにしてEnterボタンを押すと、Commit Buffer Buttonを押した場合と同じようにactionListenerが起動しますが、値を表示しても何もコミットされません。私はこれに非常に戸惑っています。JGoodiesをキーボード入力で動作させる方法が必要です。値モデルに到達するために、テキストのJTextFieldをクリックする必要はありません。