JavaFX 中的 fx:id 和 id: 有啥区别?

Posted

技术标签:

【中文标题】JavaFX 中的 fx:id 和 id: 有啥区别?【英文标题】:What's the difference between fx:id and id: in JavaFX?JavaFX 中的 fx:id 和 id: 有什么区别? 【发布时间】:2014-07-04 09:04:25 【问题描述】:

也许是一个真正新手的问题....

通过阅读本教程,我开始使用 Scene Builder 在 FMXL 应用程序中学习 JavaFX:

http://docs.oracle.com/javase/8/javafx/get-started-tutorial/fxml_tutorial.htm

所以一旦我应用了一些更改,这 2 个 ID 的问题就出现了……我可能错过或混淆了它们……

谁能告诉我它们在哪些情况下被使用?

【问题讨论】:

id 您使用,为您的组件设置一个 CSS ID,例如 并且在您的样式表中您有类似的东西@ 987654324@ 所以这将应用于你的Text 和你必须使用的fx:id,如果你想在你的控制器类中使用你的组件,你用@FXML Text myWelcomeText注释它们 @Patrick 在 CSS 中不是.welcome-text,而是#welcome-text 【参考方案1】:

id 用于设置 CSS ID 到您的组件,例如 <Text id="welcome-text" .../> 并且在您的样式表中您有类似 #welcome-text font-size: 16pt; 的内容,因此这将应用于您的 Text .

fx:id 如果你想在你的 Controller 类中使用你的组件,你可以使用 @FXML Text myWelcomeText 注释它们。

【讨论】:

那么当我们需要对节点进行样式化并且还想分配一个id时,我们必须为节点分配id和fx:id? @Fandi 目前,如果只分配了fx:id,该值也将用于id 属性。但我不确定这是记录在案的行为还是实现细节。【参考方案2】:

fx:id是fxml中组件关联的标识,用于构建控制器,id用于css。

【讨论】:

【参考方案3】:

我查看了使用JavaFX Scene Builder 生成的 FXML 文档。您可以使用 fx:id 从 Java 控制器访问控件。 (编辑)我的立场是正确的,id 确实很重要。

您可以像这样从 FXML 文档中应用 css:

<Slider id="css_id" fx:id="myslider" styleClass="style_name" .../>

(用任何控件替换滑块)

与Java控制器交互:

@FXML
Slider myslider;

【讨论】:

css id和css类是有区别的。【参考方案4】:

在 JavaFX 中,id 用于为组件设置 CSS ID。 fx:id 用于在代码中访问该组件(即在控制器类中)。 fx:id 就像组件名称一样工作。

【讨论】:

以上是关于JavaFX 中的 fx:id 和 id: 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

JavaFx 元素未绑定到 fx:id 上的控制器变量 [重复]

从另一个场景切换启用/禁用 MenuItem javafx?

JAVAFX添加按钮事件备忘

javaFX树结构treeview使用

Java 中 给一个object 赋值属性, 既可以用构造函数的方式,也可以用setXXXX()的方式,而它们之间有啥区

使用JAVAFX和SWING有啥区别[重复]