/ / Durante la digitazione in un campo di testo abilitare una sequenza di tasti INVIO per attivare un pulsante in JavaFX - javafx-2, javafx, eventi-tastiera, scenebuilder

Durante la digitazione in un campo di testo abilitare un tasto INVIO per attivare un pulsante in JavaFX - javafx-2, javafx, eventi-tastiera, scenebuilder

Ad esempio digitando nella casella di ricerca di Google, il tasto INVIO attiva la ricerca

Sono appena stato introdotto in JavaFX e SceneCostruttore pochi giorni fa quindi sto imparando le basi qui.Ho l'ultima versione di JavaFX e sto usando Scene Builder per facilitare gli eventi di azione.Inoltre, qualsiasi suggerimento per tutorial pertinenti sarebbe utile. A un certo punto del giorno ero focalizzato sulla sezione Tastiera del pannello di codifica di Scene Builder, in particolare con l'evento "On Key Released" senza risultati. Grazie in anticipo

Ecco una idea approssimativa di quello che sto cercando di fare:

@FXML
Text Field theTextField;

@FXML
Button theButton;

@FXML
void ButtonPressed() {
//do stuff here
}

@FXML
//when ENTER is pressed the button is activated
void textFieldEnterPressed() {
ButtonPressed();
}

risposte:

8 per risposta № 1

Nel tuo FXML file, aggiungi a onKeyPressed gestore

 <TextField fx:id="yourTextField" onKeyPressed="#handleEnterPressed">

Implementa il gestore in te Controller

@FXML
public void handleEnterPressed(KeyEvent event)
if (event.getCode() == KeyCode.ENTER) {
// do some actions
}
}

5 per risposta № 2

In TextField, quando premi Invio, ricevi la notifica onAction. Nel tuo codice Java puoi aggiungere:

@FXML
private void handleTFAction(ActionEvent event) {
TextField source = (TextField)event.getSource();
System.out.println("You entered: "+source.getText());
}

Nel tuo FXML (o tramite il designer di SceneBuilder di JavaFX) collegalo all'evento OnAction del tuo TextField.In FXML sembra qualcosa del genere:

<TextField onAction="#handleTFAction" ... />