我有一個描述我的GUI的fxml。我想改變gui的文本,並在任何地方按任何按鍵啓動任務。使用fxml在Javafx中添加事件監聽器到mainScene
FXML
<Text fx:id="barcodeText"/>
控制器
@FXML
Text barcodeText;
public void start(Stage primaryStage) throws IOException {
this.primaryStage=primaryStage;
Scene mainScene =new Scene(root);
primaryStage.setScene(mainScene);
primaryStage.setResizable(false);
primaryStage.show();
Parent root = FXMLLoader.load(getClass().getResource("/view/foo.fxml"));
mainScene.addEventHandler(KeyEvent.KEY_PRESSED,new KeyboardEventHandler(){
@Override
public void handle(KeyEvent event) {
barcodeText.setText("foo");
}
});
這給了我NullPointerException
(JavaFX應用程序線程內)的barcodeText指針,當我觸發事件。
我做錯了什麼?
我看了看用不用FXML這種方法的例子,我必須使用註釋來定義處理器?我在哪裏可以在fxml中放置「onAction」場景?
'@FXML Text textBox;'或'@FXML Text barcodeText;'? – pzaenger
FXML加載器在* controller *中初始化'@ FXML'-annotated字段,而不是在調用'start'的'Application'類的實例中。所以'barcodeText'(或者'textBox',或者其他你真正稱之爲的)在'Application'實例中將是空的。 –
@pzaenger對不起,這是一個錯字 –