我有这段代码:
this.trigger = new Trigger();
this.presentationModel = new PresentationModel(this.personBean, this.trigger);
final ValueModel firstNameAdapter = presentationModel.getBufferedModel("firstName");
final JTextField firstNameTextField = BasicComponentFactory.createTextField(firstNameAdapter);
和
firstNameTextField.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
trigger.triggerCommit();
}
});
因此,当我按下JTextField
上的输入按钮时,我希望ValueModel
课程中的值与我JTextField
中的值相同。除非我在JTextField
外部点击,然后返回JTextField
内部,然后按回车键,否则不会发生这种情况。如果我只输入文本并按Enter键,则ValueModel
不会获得更新的值。我坚持这个问题,任何人都可以帮忙吗?
BTW,我首先使用此链接来计算JGoodies:JGoodies Tutorial
答案 0 :(得分:0)
我希望我能正确理解你的问题。
您需要在文本字段中获取文本并将其设置在ValueModel中。
firstNameTextField.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
//this get the text from the text field
String firstName = firstNameTextField.getText();
//now write your code to set the firstname into the ValueModel
trigger.triggerCommit();
}
});
答案 1 :(得分:0)
我查看了JGoodies API(应该早点完成)并发现一个意外的静态调用,Bindings.commitImmediately()
如果我在调用trigger.triggerCommit()之前调用此方法,一切都按预期工作:)
答案 2 :(得分:0)
创建一个文本字段,该字段在键入的每个键上提交,而不是在焦点丢失时提交:
BasicComponentFactory.createTextField(firstNameAdapter, false);
此外,您应该考虑将程序架构为不使用缓冲模型。我发现他们让事情变得更复杂和棘手,并且认为我看到Karsten Lentzsch建议不要在邮件列表中使用它们。
我学习JGoodies最有用的方法是查看JGoodies绑定和验证库的教程代码。