更改 JTextfield 的侦听器

Phi*_*ris 2 java user-interface swing listener jtextfield

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

adr*_*der 5

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

textfieldName.getDocument().addDocumentListener(new DocumentListener() {
    // implement the methods
});
Run Code Online (Sandbox Code Playgroud)


And*_*nov 5

正如已经说过的 - 使用 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在你的 jTextField 上使用它:

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

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

jTextField.getDocument().addDocumentListener((SimpleDocumentListener) e -> {
    // Your code here
});
Run Code Online (Sandbox Code Playgroud)