Я использую JGoodies Binding на JTextField следующим образом:
trigger = new Trigger();
PresentationModel<SpectralControlsModel> adapter = new PresentationModel<SpectralControlsModel>(model, trigger);
ValueModel valueModelStartingSampleJTextField = adapter.getBufferedModel("startingSample");
startingSampleJTextField = BasicComponentFactory.createLongField(valueModelStartingSampleJTextField);
setupValueModelListener(valueModelStartingSampleJTextField, startingSampleJTextField);
У меня есть keyListener на JTextField, который фиксирует данные в модели при нажатии клавиши «ввод».
Проблема в том, что когда я ввожу новый номер в JTextField и нажимаю enter, модель получает старое значение, даже если я вызываю trigger.triggerCommit (). Если я введу новое число, а затем нажму на что-то другое, потерю фокуса на JTextField, а затем снова получу фокус, тогда новое значение окажется в модели, как ожидалось.
Дайте мне знать, если я достаточно четко описал проблему, это очень странное поведение, и мне нужно разобраться с этим, спасибо.
UPDATE
Я пошел к этому Java2s.com JGoodies Example и добавил этот код:
firstNameTextField.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
trigger.triggerCommit();
}
});
Когда я нажимаю кнопку ввода с включенной функцией отладки, actionListener срабатывает точно так же, как если бы я нажимал кнопку Commit Buffer Button, но при выводе значений ничего не фиксируется. Я очень озадачен этим. Должен быть способ заставить JGoodies работать с клавиатурным вводом. Мне не нужно было щелкать текстовое поле JTextField, чтобы перейти к модели значений.