【问题标题】:Change Listener for a JTextfield更改 JTextfield 的侦听器
【发布时间】:2021-05-23 03:44:45
【问题描述】:

我制作了一个从面板动态获取数据的程序,但我的代码需要用户点击回车按钮才能更新数据。是否有更改侦听器或其他侦听器可以在 Jtextfield 更新时更新数据?谢谢!

【问题讨论】:

  • 能否提供一些代码供我们查看?
  • 是的。在文本字段的文档中附加一个DocumentListener

标签: java swing user-interface listener jtextfield


【解决方案1】:

只需向文本字段添加一个侦听器,以便它在文本更改时进行跟踪

textfieldName.getDocument().addDocumentListener(new DocumentListener() {
    // implement the methods
});

【讨论】:

    【解决方案2】:

    正如已经说过的 - 使用 DocumentListener 来跟踪 jTextField 上的更改,但是,因为 DocumentListener 有点“过度设计”,并且很少有用例必须区分不同类型的更改(insertUpdate、removeUpdate 和 changedUpdate ),你可以做的是:

    创建一个扩展 DocumentListener 的接口并提供所有 DocumentListener 方法的默认实现:

    @FunctionalInterface
    public interface SimpleDocumentListener extends DocumentListener {
        void update(DocumentEvent e);
    
        @Override
        default void insertUpdate(DocumentEvent e) {
            update(e);
        }
        @Override
        default void removeUpdate(DocumentEvent e) {
            update(e);
        }
        @Override
        default void changedUpdate(DocumentEvent e) {
            update(e);
        }
    }
    

    然后在你的 jTextField 上使用它:

    jTextField.getDocument().addDocumentListener(new SimpleDocumentListener() {
        @Override
        public void update(DocumentEvent e) {
            // Your code here
        }
    });
    

    或者你甚至可以将它与 lambda 表达式一起使用:

    jTextField.getDocument().addDocumentListener((SimpleDocumentListener) e -> {
        // Your code here
    });
    

    【讨论】:

      猜你喜欢
      • 2011-04-26
      • 2015-05-10
      • 2014-03-21
      • 2013-03-23
      • 2012-12-27
      • 2011-07-23
      • 2018-12-21
      相关资源
      最近更新 更多