gpt4 book ai didi

JavaFX FXML - 使用 fx :id 获取 MenuItem

转载 作者:行者123 更新时间:2023-12-01 19:52:32 24 4
gpt4 key购买 nike

我正在使用 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 fx:id="submitButton"。您的 Controller 代码应如下所示:

@FXML Button submitButton;

在你的初始化方法中你应该这样做:

submitButton.setOnAction(event ->{
//Your code here!
});

关于JavaFX FXML - 使用 fx :id 获取 MenuItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50838110/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com