您应该签出Ensemble示例。这是关键的侦听器代码。
import javafx.application.Application;import javafx.scene.Group;import javafx.scene.Scene;import javafx.stage.Stage;import javafx.collections.FXCollections;import javafx.collections.ListChangeListener;import javafx.event.EventHandler;import javafx.scene.Group;import javafx.scene.Node;import javafx.scene.control.ListView;import javafx.scene.control.TextField;import javafx.scene.effect.DropShadow;import javafx.scene.effect.PerspectiveTransform;import javafx.scene.input.KeyEvent;import javafx.scene.layout.VBox;import javafx.scene.paint.Color;public class KeyEventsSample extends Application { private void init(Stage primaryStage) { Group root = new Group(); primaryStage.setScene(new Scene(root)); //create a console for logging key events final ListView<String> console = new ListView<String>(FXCollections.<String>observableArrayList()); // listen on the console items and remove old ones when we get over 20 items in the list console.getItems().addListener(new ListChangeListener<String>() { @Override public void onChanged(Change<? extends String> change) { while (change.next()) { if (change.getList().size() > 20) change.getList().remove(0); } } }); // create text box for typing in final TextField textBox = new TextField(); textBox.setpromptText("Write here"); textBox.setStyle("-fx-font-size: 34;"); //add a key listeners textBox.setonKeyPressed(new EventHandler<KeyEvent>() { public void handle(KeyEvent ke) { console.getItems().add("Key Pressed: " + ke.getText()); } }); textBox.setonKeyReleased(new EventHandler<KeyEvent>() { public void handle(KeyEvent ke) { console.getItems().add("Key Released: " + ke.getText()); } }); textBox.setonKeyTyped(new EventHandler<KeyEvent>() { public void handle(KeyEvent ke) { String text = "Key Typed: " + ke.getCharacter(); if (ke.isAltDown()) { text += " , alt down"; } if (ke.isControlDown()) { text += " , ctrl down"; } if (ke.ismetaDown()) { text += " , meta down"; } if (ke.isShiftDown()) { text += " , shift down"; } console.getItems().add(text); } }); VBox vb = new VBox(10); vb.getChildren().addAll(textBox, console); root.getChildren().add(vb); } @Override public void start(Stage primaryStage) throws Exception { init(primaryStage); primaryStage.show(); } public static void main(String[] args) { launch(args); }}


