我在 JTextField 上使用 JGoodies Binding,如下所示:
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.com JGoodies 示例并添加了以下代码:
firstNameTextField.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
trigger.triggerCommit();
}
});
当我在调试打开的情况下点击 enter 按钮时,actionListener 会像我点击提交缓冲区按钮一样触发,但是当我显示值时没有提交任何内容。我对此感到非常困惑。必须有一种方法可以让 JGoodies 使用键盘输入。我不必从 JTextField 中单击以使文本进入值模型。