有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java可以将JTextField中的值强制输入到ValueModel(JGoodies)中吗

我有这个密码:

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上的enter按钮时,我希望ValueModel类中的值与JTextField中的值相同。除非我在JTextField外部单击,然后在JTextField内部单击,然后按enter键,否则不会发生这种情况。如果我只是输入文本并按enter键,ValueModel不会得到更新后的值。我被这个问题困住了,有人能帮忙吗

顺便说一句,我首先使用这个链接来计算JGoodies:JGoodies Tutorial


共 (3) 个答案

  1. # 1 楼答案

    我希望我正确地理解了你的问题

    您需要在文本字段中获取文本,并在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();
        }     
     }); 
    
  2. # 2 楼答案

    我查看了JGoodies API(应该早点完成),发现了一个意外的静态调用Bindings。立即

    如果我在调用触发器之前调用这个方法。triggerCommit(),一切正常:)

  3. # 3 楼答案

    创建一个文本字段,在键入的每个键上提交,而不是在焦点丢失时提交:

    BasicComponentFactory.createTextField(firstNameAdapter, false);
    

    也应该考虑不要使用缓冲模型来构造程序。我发现它们让事情变得更加复杂和棘手,我想我看到了卡斯滕·伦茨许(Karsten Lentzsch)在邮件列表中建议不要使用它们

    对我来说,学习JGoodies最有用的方法是查看JGoodies绑定和验证库的教程代码