java - 不断从 JTextField 读取字符串

标签 java swing jtextfield string-length documentlistener

我有一个 DocumentListener 来查找 JTextField 中的任何更改:

public class MyDocumentListener implements DocumentListener {

    static String text;

    public void insertUpdate(DocumentEvent e) {
        updateLog(e);
    }
    public void removeUpdate(DocumentEvent e) {
        updateLog(e);
    }
    public void changedUpdate(DocumentEvent e) {
        //Plain text components do not fire these events
    }

    public static String passText() {
        System.out.println("string that will be passed is: "+text);
        return text;
    }

    public void updateLog(DocumentEvent e) {

        Document doc = (Document)e.getDocument();
        int length = e.getLength();

        try {
            text = doc.getText(0, length);
        } catch (BadLocationException e1) {
            e1.printStackTrace();
        }
        System.out.println("you typed "+text);  
    }
}

然后,在另一个类中:

String info = MyDocumentListener.passText();

问题是我只得到一个字符,而不是整个字符串。有什么建议吗?

最佳答案

您获得的是更改的长度,而不是文档的长度:

int length = e.getLength(); // probably 1

应该是

int length = doc.getLength();

关于java - 不断从 JTextField 读取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9383265/

相关文章:

java - 使用 Spring 连接远程数据库时出现访问被拒绝错误

java - 使用反射将可见 false 设置为按钮,可以吗?

java - 在空 JTextField 中按下退格键时禁用蜂鸣声

java - 如果文本字段已填充,则设置启用按钮

Java静态枚举方法返回默认枚举值

java - 如何使用 Java 正确地从套接字流式传输数据

java - 如何最大化 JFrame

Java 物理循环(按时间间隔重新绘制)不稳定,除非鼠标正在移动

java - JTextField - setColumns() 方法对我不起作用

java - GWT 处理用户在页面上的点击