java - 使用 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 的线程系统,但我以前从未使用过它,而且我在网上找不到任何关于如何使用它来解决这个问题的信息。
谢谢!
解决方案
我很确定我需要使用java的线程系统,
这不是您设计 GUI 的方式。通常,GUI 坐在那里什么都不做。想想你的浏览器,它只在用户生成事件时才做一些事情,例如,通过使用键盘或鼠标。
我想做的是有一个函数让程序等到用户输入一串文本并按下回车键
如果您想提示用户输入文本,那么您可能应该使用JOptionPane
. 阅读有关如何制作对话框的 Swing 教程以获取一些示例。
如果您确实遇到需要在表单的文本字段中输入文本时进行处理的情况,那么您可以在ActionListener
文本字段中添加一个。
请参阅:如何使用文本字段。
当在文本字段上按下时,该TextDemo
示例会将文本从文本字段复制到文本区域。Enter
推荐阅读
- c# - 如何在 C# 中使用 CSOM 在 SharePoint 团队网站中创建 Home.aspx 页面?
- python - 如何裁剪 coco 数据集以进行预处理?
- javascript - handleSubmit 未提交 formik 表单
- python - 如何忽略和跳过 Python sftp 错误
- file - 如何从 perl 中的特定文件调用函数?
- javascript - React JSX 中的映射导致未捕获的不变违规错误
- python - 在 conda-build 配方中排除特定的 Python 版本
- jakarta-ee - 在 github 操作中针对 Chrome 无头运行 Arquillian 测试
- windows - 受密码保护的 zip 与加密的 zip 文件是否不同?
- mitmproxy - 为多个上游 ip 生成证书