JavaFX FXML - 使用 fx:id 获取 MenuItem
JavaFX FXML - Getting MenuItem using fx:id
我正在使用 Scene Builder 构建 Java 应用程序的 GUI。对于每个元素,我都给它一个 fx:id
以便我以后可以参考它们。我需要在它的许多元素上使用 setOnAction()
,例如:
((Button)mainPane.lookup("#submitButton")).setOnAction(e->{
// ... code triggered when button is pressed ...
});
这适用于除 MenuItem
s 之外的大多数元素。当我尝试以下操作时,Eclipse 告诉我 "Cannot cast from Node
to MenuItem
" 但它不起作用。
// Does not work
((MenuItem)mainPane.lookup("#about")).setOnAction(e->{
// ... take user to about page ...
});
我看到 MenuItem
只扩展了 Object
,所以它不能从 Node
转换而来。如何使用 fx:id
取回 MenuItem
?
注意:我知道我可以使用 FXML 的 On Action
,但我想利用 Lambda 函数并使事件处理代码保持相同的风格。
((Button)mainPane.lookup("#submitButton"))
<- 是个糟糕的主意。
如果您的节点有 fx:id
。你应该做 @FXML YourNodeType yourNodeFx:Id;
示例:在 FXML 中,您的 Button's
fx:id="submitButton"
。您的 Controller
代码应如下所示:
@FXML Button submitButton;
在你的初始化方法中你应该这样做:
submitButton.setOnAction(event ->{
//Your code here!
});
我正在使用 Scene Builder 构建 Java 应用程序的 GUI。对于每个元素,我都给它一个 fx:id
以便我以后可以参考它们。我需要在它的许多元素上使用 setOnAction()
,例如:
((Button)mainPane.lookup("#submitButton")).setOnAction(e->{
// ... code triggered when button is pressed ...
});
这适用于除 MenuItem
s 之外的大多数元素。当我尝试以下操作时,Eclipse 告诉我 "Cannot cast from Node
to MenuItem
" 但它不起作用。
// Does not work
((MenuItem)mainPane.lookup("#about")).setOnAction(e->{
// ... take user to about page ...
});
我看到 MenuItem
只扩展了 Object
,所以它不能从 Node
转换而来。如何使用 fx:id
取回 MenuItem
?
注意:我知道我可以使用 FXML 的 On Action
,但我想利用 Lambda 函数并使事件处理代码保持相同的风格。
((Button)mainPane.lookup("#submitButton"))
<- 是个糟糕的主意。
如果您的节点有 fx:id
。你应该做 @FXML YourNodeType yourNodeFx:Id;
示例:在 FXML 中,您的 Button's
fx:id="submitButton"
。您的 Controller
代码应如下所示:
@FXML Button submitButton;
在你的初始化方法中你应该这样做:
submitButton.setOnAction(event ->{
//Your code here!
});