gpt4 book ai didi

JavaFX 通过名称查找 ToggleGroup 类

转载 作者:行者123 更新时间:2023-12-02 09:50:58 26 4
gpt4 key购买 nike

当我需要获取 Button 类时,我接下来要做的事情是:

按钮 B = (Button)scene.lookup("#ID");

如何查找 ToggleGroup 类?

最佳答案

查找通常不是很强大,正如您在问题中指出的那样,您无法使用它们来访问不是场景图中节点的元素(例如切换组)。通常,您应该将元素注入(inject)到 Controller 中。

如果您动态生成 FXML,或者由于某些其他原因无法创建 Controller 类,则可以访问 FXML 加载程序的命名空间。这是一张 map ,您可以使用它来通过 fx:id 查找对象来自 FXML 的属性。

因此,如果您有一个 FXML 文件

<VBox>
<fx:define>
<ToggleGroup fx:id="myToggleGroup"/>
</fx:define>
<children>
<RadioButton text="A" toggleGroup="$myToggleGroup"/>
<RadioButton text="B" toggleGroup="$myToggleGroup"/>
<RadioButton text="C" toggleGroup="$myToggleGroup"/>
</children>
</VBox>

然后您可以使用以下命令检索切换组

FXMLLoader loader = new FXMLLoader(fxmlURL);
Parent root = loader.load();
Map<String, Object> fxmlNamespace = loader.getNamespace();

ToggleGroup toggleGroup = (ToggleGroup) fxmlNamespace.get("myToggleGroup");

当然,您可以对场景图元素执行相同的操作。以这种方式执行操作而不是使用 CSS 查找有一个优点,因为一旦加载 FXML 文件,命名空间就会完全填充。 (CSS 查找仅在应用 CSS 后才起作用。)

此外,自从 namespace只是一张 map ,可以动态查找fx:id通过调用 namespace.keySet() 定义的,因此无需预先知道可能定义的 id。

关于JavaFX 通过名称查找 ToggleGroup 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28150331/

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