首页 > 解决方案 > 使用 Java swing 等待事件

问题描述

我有一个名为“Text”的 Java 类,它使用 swing 来创建 2 个文本框。其中有一个侦听器将文本从第一个框复制到第二个框的末尾。到目前为止,我已经将它设置为其他类可以调用函数以将文本输出到第二个框的位置。

我想要做的是有一个函数让程序等到用户输入一串文本并按下回车键(这将触发我已经拥有的事件侦听器),然后将该文本串返回给用户。

我尝试做类似的事情:

String lastInput;
boolean waiting;

    public void actionPerformed(ActionEvent evt) {
        String text = textField.getText();
        println(text);
        lastInput = text;
        waiting = false;
        parse(text);
        textField.selectAll();
    }

    public String get() {
        waiting = true;
        while(waiting){}
        return lastInput;
    }

但这只会导致程序冻结而不注册任何输入(包括在文本框中输入的任何内容)。我很确定我需要使用 java 的线程系统,但我以前从未使用过它,而且我在网上找不到任何关于如何使用它来解决这个问题的信息。

谢谢!

标签: javaswingasynchronouseventsio

解决方案


我很确定我需要使用java的线程系统,

这不是您设计 GUI 的方式。通常,GUI 坐在那里什么都不做。想想你的浏览器,它只在用户生成事件时才做一些事情,例如,通过使用键盘或鼠标。

我想做的是有一个函数让程序等到用户输入一串文本并按下回车键

如果您想提示用户输入文本,那么您可能应该使用JOptionPane. 阅读有关如何制作对话框的 Swing 教程以获取一些示例。

如果您确实遇到需要在表单的文本字段中输入文本时进行处理的情况,那么您可以在ActionListener文本字段中添加一个。

请参阅:如何使用文本字段

当在文本字段上按下时,该TextDemo示例会将文本从文本字段复制到文本区域。Enter


推荐阅读