【发布时间】:2018-06-13 13:08:44
【问题描述】:
我正在使用 Scene Builder 构建 Java 应用程序的 GUI。对于每个元素,我都给了它一个fx:id,以便我以后可以参考它们。我需要在它的许多元素上使用setOnAction(),例如:
((Button)mainPane.lookup("#submitButton")).setOnAction(e->{
// ... code triggered when button is pressed ...
});
这适用于除MenuItems 之外的大多数元素。当我尝试以下操作时,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 函数并保持事件处理代码的风格相同。
【问题讨论】:
-
尝试从
MenuBar查找它。 -
在下面使用 Sedrick 的答案。这样,您还可以使用
@FXML MenuItem mnuAbout;声明声明您的所有MenuItems。比尝试为每个节点查找fx:id要好得多。
标签: java javafx fxml scenebuilder