Ich bin neu in Java und habe Probleme, Code zum Laufen zu bringen. Ich habe eine GUI mit den Buchstaben A-Z. Nach einem Klick auf die Schaltfläche möchte ich ein Keyevent bitten, ein paar Dinge zu tun:JavaFX stop KeyEvent nach Erhalt nur eines alphanumerischen Zeichens
- Nur erlauben, einen Buchstaben auszuwählen. Groß- oder Kleinschreibung. Warten Sie nicht auf eine korrekte Antwort.
- Dann überprüfen Sie die alphabetische Liste, um zu sehen, ob es zuvor gedrückt wurde. Wenn ja, fragen Sie nach einem anderen Buchstaben
- Wenn ein neues Zeichen eingegeben wird, dann streichen Sie es auf dem Alphabet und führen Sie die folgende Methode aus
Deaktivieren Sie alle weiteren Tasten gedrückt. Ich habe den folgenden Code versucht:
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"); }
Es geht von hier falsch. Ich möchte nicht, dass Tasten erneut gedrückt werden und ich nicht die folgende Methode ausführen sollte:
letterCount = newPhrase.makeGuess(userGuess);
...my method....;
})
Ich habe keine Ahnung, wie Sie es beheben. Ich habe getestet und aufgezeichnet, dass die Benutzerschätzung ausgewählt wurde, aber die Methode wird nicht fortgesetzt, und die Eingabe wird nicht beendet. Ich finde auch, dass meine Codierung für das alphanumerische Zeug falsch ist.
Was Sie Habe dafür gesorgt, sieht gut aus, obwohl es ein paar kleine Änderungen gibt, die man machen kann, um es zu verdichten. Es sei denn, das Problem, das Sie haben, liegt nicht in dem von Ihnen bereitgestellten Code? ZB Initialisierung "Alphabet", die ich beim Testen erraten habe – Peter
Das Alphabet ist eingerichtet. Es hebt ab und funktioniert gut. Das Problem ist, dass ich das Schlüsselereignis anhalten möchte, bis die Methode, die es aufruft, erneut ausgeführt wird. – mineshmshah
Wollen Sie damit aufhören, die Buchstaben zu prüfen, nachdem jeder Buchstabe im Alphabet korrekt erraten wurde? – Peter