入力と出力の「コンソール」として GUI を使用したテキスト ベースのゲームに取り組んでいます。私の目的は、ゲームが要求したときに、JTextArea に入力したコマンドを別のメソッドに送信することです。
がuser.readLine()
呼び出されると、GUI がアクション イベントを受け取るまでループします。このイベントの検出はcommanded
、 actionevent のメソッドで切り替えられた というブール値の反転によって達成されます。readLine()
次に、この時点でループを中断し、入力されたばかりのテキストを返し、ブール値を元に戻します。興味深いことに、これは 、ブール値を元に戻す前にaSystem.out.println();
または aを追加した場合にのみ機能します...Thread.sleep(1);
このreadLine()
メソッドはアクション イベントを待機するため、中かっこの間にコードを入れずに多くのループを実行します。これを「短絡」であり、避けるべきものと考えるのは間違っていますか? コードは以下です。ありがとう!
CommandInput.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("");
}