我正在开发一个基于文本的游戏,它使用 GUI 作为输入和输出的“控制台”。我的目标是,当游戏要求时,将我在 JTextArea 中键入的命令提交给另一个方法。
为此,我提出了这个想法:当user.readLine()
被调用时,它会循环直到 GUI 接收到一个动作事件。此事件的检测是通过翻转一个名为 的布尔值来完成的commanded
,在 actionevent 的方法中切换。readLine()
然后在此时中断循环并返回刚刚输入的文本,然后将布尔值翻转回来。有趣的是,这只适用于我 在翻转布尔值之前添加 aSystem.out.println();
或 a ......Thread.sleep(1);
该readLine()
方法涉及大量循环,大括号之间没有代码,因为它等待动作事件。将其视为“短路”和应避免的事情是错误的吗?代码如下。谢谢!
命令输入.java:
public void waitForCommand() {
try {
processCommand(Parasite.user.readLine().toLowerCase());
} catch (Exception e) {
System.err.println(e);
}
}
UI.java(初始化为 Parasite.user):
boolean commanded= false;
String command = "";
public final String readLine()
{
while(commanded == false)
{
System.err.print(command);
}
System.out.println("Submitting Command");
commanded = false;
return command;
}
private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {
commanded=true;
command=jTextField1.getText();
System.err.println(jTextField1.getText());
jTextField1.setText("");
}