【发布时间】:2016-06-09 22:44:48
【问题描述】:
我是 Java 新手,无法让某些代码正常工作。我有一个带有字母 A-Z 的 GUI。单击按钮后,我想请求一个 Keyevent 来做几件事:
- 只允许您选择一个字母。大写或小写。如果不是,请等待正确的响应。
- 然后检查字母列表,看看它之前是否被按下过。如果它已经要求另一封信
- 如果输入了新字符,则在字母表上将其删除并运行以下方法
-
禁用任何其他正在按下的键。 我试过以下代码:
private static void spinGame(){ switch (wheelResult) { case "1' ... break; case "2": ... break; default: System.out.println("..."); newPhrase.gameB(); scene2.setOnKeyPressed((KeyEvent event) -> { if (event.getText().isEmpty()) return; char pressed = event.getText().toUpperCase().charAt(0); userGuess=event.getText().charAt(0); if ((pressed < 'A' || pressed > 'Z')) return; Text t = alphabet.get(pressed); if (t.isStrikethrough()) return; // mark the letter 'used' else{t.setFill(Color.BLUE); t.setStrikethrough(true); System.out.println(userGuess); } int letterCount; if ((userGuess == 'a') || (userGuess == 'e') || (userGuess == 'i') || (userGuess == 'o') || (userGuess == 'u')){ playerScores[currentPlayer] -= 250; System.out.println("£250 docked from score for vowel use"); }
从这里开始出错。我不想再次按下按键,我不应该运行以下方法:
letterCount = newPhrase.makeGuess(userGuess);
...my method....;
})
我不知道如何解决它。我测试并记录了用户猜测被选中,但它没有继续执行该方法,并且输入的键没有停止。我也觉得我对字母数字的编码是错误的。
【问题讨论】:
-
您提供的内容看起来不错,尽管您可以做一些小的更改来压缩它。除非您遇到的问题不在您提供的代码中?例如初始化“字母表”,我在测试时猜到了
-
字母表设置完毕。它取消并且工作正常。问题是我想停止关键事件,直到调用它的方法再次运行。
-
你的意思是你想在字母表中的每个字母都猜对后停止检查字母吗?
-
我将如何压缩它?
-
userGuess 并按住相同的值,你可以只用一个来压缩它
标签: java javafx keyevent onkeypress