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
,例如 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?
Java 中 给一个object 赋值属性, 既可以用构造函数的方式,也可以用setXXXX()的方式,而它们之间有啥区