gpt4 book ai didi

Java 监听器不工作,除非我按 Enter 键,如何在文本框更改后使其工作

转载 作者:行者123 更新时间:2023-12-01 18:25:06 26 4
gpt4 key购买 nike

当操作执行事件时,我已将监听器固定在 JtextField 内,以便一旦用户进行任何更改,就对文本框中所做的任何更改执行操作。但问题是代码无法启动或工作,除非你按下回车键代码执行代码,我需要知道我必须添加什么以及在文本归档立即更改后在哪里启用下面的代码。我可以看到一些类似的引用Oracle监听器帮助的帮助,但我无法管理,所以我需要直接简单的方法。

private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {                                            
jTextField1.getDocument().addDocumentListener(new DocumentListener() {

public void changedUpdate(DocumentEvent e) {
JOptionPane.showMessageDialog(null, "Change case");
}
public void insertUpdate(DocumentEvent de) {
JOptionPane.showMessageDialog(null, "Update Case");
}

public void removeUpdate(DocumentEvent de) {
JOptionPane.showMessageDialog(null, "Remove case");
}
});
// TODO add your handling code here:
}

最佳答案

文本字段的

ActionListener 仅监听键入的 enter 键。因此,您的代码本质上所做的是:当按下 enter 键时,会向文本字段添加一个新的 DocumentListener

DocumentListener 就是您想要的,因此将该代码(添加文档监听器)从 jTextField1ActionPerformed 方法中取出,并将其放入类的构造函数中。或者有一个私有(private)方法,以免构造函数困惑。

假设您正在使用 Netbeans GUI 编辑器(从您的方法签名来看很像):

public class MyFrame exentds JFrame {
public MyFrame() {
initComponents();
addDocumentListenerToField();
}

private void addDocumentListenerToField() {
jTextField.getDocument().addDocumentListener(..);
}
}
<小时/>

更新:演示

import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;

public class DocListeenerDemo extends JFrame {
private JTextField field;
private JLabel label;

public DocListeenerDemo() {
initComponents();
addDocumentListenerToField();
}

private void initComponents() {
setLayout(new GridLayout(0, 1));
field = new JTextField(20);
label = new JLabel("", SwingConstants.CENTER);
add(field);
add(label);
setDefaultCloseOperation(EXIT_ON_CLOSE);
pack();
setLocationByPlatform(true);
}

private void addDocumentListenerToField() {
field.getDocument().addDocumentListener(new DocumentListener(){
public void changedUpdate(DocumentEvent arg0) {doYourStuff();}
public void insertUpdate(DocumentEvent arg0) {doYourStuff();}
public void removeUpdate(DocumentEvent arg0) {doYourStuff();}
public void doYourStuff() {
label.setText(field.getText());
}
});
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run() {
DocListeenerDemo demo = new DocListeenerDemo();
demo.setVisible(true);
}
});
}
}

我还没有找到通过 GUI 工具添加 DocumentListener 的方法。糟透了。

关于Java 监听器不工作,除非我按 Enter 键,如何在文本框更改后使其工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26489899/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com