[英]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
以外的大多数元素。 当我尝试以下操作时,Eclipse告诉我“无法从Node
投射到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;
在您的initialize方法中,您应该执行以下操作:
submitButton.setOnAction(event ->{
//Your code here!
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.