在FXML文件(JavaFX)中多次插入同一对象
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在FXML文件(JavaFX)中多次插入同一对象,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2225字,纯文字阅读大概需要4分钟。
内容图文
![在FXML文件(JavaFX)中多次插入同一对象](/upload/InfoBanner/zyjiaocheng/683/6953c2523aa64e1385d32c9e04c31c59.jpg)
我有一个带有2个标签的FXML文件.在每个选项卡中,我都有相同的Text元素列表.如何避免必须重复每个Text元素?
这是我的FXML文件的摘录:
<Tab>
<GridPane>
<columnConstraints>
<ColumnConstraints />
</columnConstraints>
<rowConstraints>
<RowConstraints />
<RowConstraints />
<RowConstraints />
<RowConstraints />
<RowConstraints />
</rowConstraints>
<children>
<Text fx:id="text1" GridPane.rowIndex="1" />
<Text fx:id="text2" GridPane.rowIndex="2" />
<Text fx:id="text3" GridPane.rowIndex="3" />
<Text fx:id="text4" GridPane.rowIndex="4" />
</children>
</GridPane>
</Tab>
<Tab>
<GridPane>
<columnConstraints>
<ColumnConstraints />
</columnConstraints>
<rowConstraints>
<RowConstraints />
<RowConstraints />
<RowConstraints />
<RowConstraints />
<RowConstraints />
</rowConstraints>
<children>
<Text fx:id="text1" GridPane.rowIndex="1" />
<Text fx:id="text2" GridPane.rowIndex="2" />
<Text fx:id="text3" GridPane.rowIndex="3" />
<Text fx:id="text4" GridPane.rowIndex="4" />
</children>
</GridPane>
</Tab>
如果将相同的id放在两个Text元素中(例如,两个选项卡中的fx:id =“ text1”),则会出现错误(重复的id引用).
解决方法:
可以使用fx:include和嵌套控制器重写fxml.
创建一个新的fxml文件sub.fxml,其中包含您重复的场景部分,例如
<Tab xmlns:fx="http://javafx.com/fxml/1" fx:controller="mypackage.SubController">
<GridPane>
<columnConstraints>
<ColumnConstraints />
</columnConstraints>
<rowConstraints>
<RowConstraints />
<RowConstraints />
<RowConstraints />
<RowConstraints />
<RowConstraints />
</rowConstraints>
<children>
<Text fx:id="text1" GridPane.rowIndex="1" />
<Text fx:id="text2" GridPane.rowIndex="2" />
<Text fx:id="text3" GridPane.rowIndex="3" />
<Text fx:id="text4" GridPane.rowIndex="4" />
</children>
</GridPane>
</Tab>
创建SubController类,并使相关部分可访问:
public class SubController {
@FXML
private Text text1;
...
@FXML
private Text text4;
public void setText1(String text) {
this.text1.setText(text);
}
...
}
现在,更改“主要” fxml以使用随附的fxml:
<fx:include source="sub.fxml" fx:id="tab1" />
<fx:include source="sub.fxml" fx:id="tab2" />
并在父控制器中创建用于注入SubController的字段:
@FXML
private SubController tab1Controller;
@FXML
private SubController tab2Controller;
您将能够以与访问其他注入元素相同的方式访问控制器.例如.在第一个选项卡中设置text1的文本:
tab1Controller.setText1("Hello World!");
内容总结
以上是互联网集市为您收集整理的在FXML文件(JavaFX)中多次插入同一对象全部内容,希望文章能够帮你解决在FXML文件(JavaFX)中多次插入同一对象所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。