我有FXML和keyPress處理程序的問題。JavaFX FXML控制器密鑰處理程序代碼不起作用
我嘗試設置按鍵按下簡單測試,但沒有調用按鍵處理程序。鼠標處理等工作正常,但密鑰處理沒有。
我試圖setneHandler窗格上,圓(窗格)和場景。
public class Controller implements Initializable {
public Pane canvas;
public Label yDisplay;
public Label xDisplay;
public Circle circle;
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
canvas.setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent keyEvent) {
System.out.println("Test");
}
});
}
}
尊敬語,THX你的答案,但我希望做了一些「遊戲」,其中對窗格簡單的圓形,上keybord移動通過壓。當然,重點關注組件將起作用。但沒有重點。也許關鍵聽衆必須設置在窗口或場景?我對目的的模糊性表示歉意。
我試圖按下按鈕,但在初始化中,scence爲空。
public class Controller implements Initializable {
@FXML private Pane canvas;
@FXML private Label yDisplay;
@FXML private Label xDisplay;
@FXML private Circle circle;
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
canvas.getScene().setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent keyEvent) {
System.out.println("Work");
}
});
canvas.setOnMousePressed(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
canvas.getChildren().add(new Bullet(150.0, 150.0, mouseEvent.getX(), mouseEvent.getY()));
}
});
}
}
它的邏輯,我試圖在Apllication類設置。在應用程序上設置密鑰處理程序,它的工作!但是,如何讓圓和現場的其他成分,becouse他們controlle.class
@Override
public void start(Stage primaryStage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(root));
primaryStage.getScene().setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent keyEvent) {
System.out.println("HEY");
}
});
primaryStage.show();
}
現在,我係有李宗紅/母根的查找
是做kepp!父母的查找是工作。我只需要通過#+「ID」搜索
@Override
public void start(Stage primaryStage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(root));
primaryStage.getScene().setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent keyEvent) {
System.out.println("HEY");
Circle myCirecle = (Circle) root.lookup("#circle");
myCirecle.setTranslateY(10.0);
}
});
primaryStage.show();
}
您可以使用查找來獲取圓,但有一個標準的方法來做到這一點。在控制器中寫入getter方法以獲得Circle(例如:getCircle())。使用getController API從fxmlLoader獲取控制器。然後使用getCircle方法可以得到圓。 – Dil