更改 JTextfield 的侦听器
Change Listener for a JTextfield
我制作了一个从面板动态获取数据的程序,但我的代码需要用户点击回车按钮才能更新数据。是否有更改侦听器或其他侦听器可以在更新时从 Jtextfield 更新数据?谢谢!
只需向文本字段添加一个侦听器,以便它在文本更改时进行跟踪
textfieldName.getDocument().addDocumentListener(new DocumentListener() {
// implement the methods
});
如前所述 - 使用 DocumentListener 来跟踪 jTextField 上的更改,但是,由于 DocumentListener 是一种 "overengineered",并且在极少数用例中您必须区分不同类型的更改(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
});
我制作了一个从面板动态获取数据的程序,但我的代码需要用户点击回车按钮才能更新数据。是否有更改侦听器或其他侦听器可以在更新时从 Jtextfield 更新数据?谢谢!
只需向文本字段添加一个侦听器,以便它在文本更改时进行跟踪
textfieldName.getDocument().addDocumentListener(new DocumentListener() {
// implement the methods
});
如前所述 - 使用 DocumentListener 来跟踪 jTextField 上的更改,但是,由于 DocumentListener 是一种 "overengineered",并且在极少数用例中您必须区分不同类型的更改(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
});