我有一个名为“Text”的 Java 类,它使用 swing 创建 2 个文本框。其中有一个监听器将文本从第一个框复制到第二个框的末尾。到目前为止,我已将其设置为其他类可以调用函数以将文本输出到第二个框的位置。
我想要做的是有一个函数,使程序等待,直到用户输入一串文本并按 Enter 键(这将触发我已有的事件监听器),然后将该文本字符串返回到用户。
我尝试做类似的事情:
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 的线程系统,但我以前从未使用过它,而且我在网上找不到任何关于如何使用它来解决这个问题的信息。
谢谢!
最佳答案
I'm pretty sure that I'd need to make use of java's thread system,
这不是设计 GUI 的方式。一般来说,GUI 坐在那里什么都不做。想想您的浏览器,它仅在用户生成事件时执行某些操作,例如,通过使用键盘或鼠标。
I want to do is have a function that causes the program to wait until the user enters a string of text and presses enter
如果您想提示用户输入文本,那么您可能应该使用JOptionPane
。阅读 How to Make Dialogs 上的 Swing 教程举一些例子。
如果您确实需要在表单的文本字段中输入文本时进行处理,那么您可以将 ActionListener
添加到文本字段。
当在文本字段上按 Enter 时,TextDemo
示例会将文本从文本字段复制到文本区域。
关于java - 使用 Java swing 等待事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66057058/