我即将完成数据库应用程序,但找不到有关如何更改 Controller 的 fxml 文件中写入的代码和默认值的解决方案。
我有一个包含列和这些列的 CheckMenuItems 的 Tableview。所选列的 CheckMenuItems 应该是可见列。未选定的项目不应可见。
我已经成功地做到了这一点,在我取消选择 CheckMenuItem 后,列消失了:
@FXML
public void checkNR(ActionEvent event) {
if(!checkMenuItemNR.isSelected()) {
tablecolumnNR.setVisible(false);
}
if(checkMenuItemNR.isSelected()) {
tablecolumnNR.setVisible(true);
}
使用该程序一次后,到目前为止我的预期结果还不错。但是,如果我再次启动它,所有内容都会再次设置为默认值,并且我会看到所有列。
我想要的是更改下面代码中的最后一行,如果我取消选择该 CheckMenuItem,则所选内容将设置为 false。
<Menu mnemonicParsing="false" text="Spalten">
<items>
<CheckMenuItem fx:id="checkMenuItemNR" mnemonicParsing="false" onAction="#checkNR" selected="true" text="NR" />
CheckMenuItems for each column selected at the start of the program
colums disappear if I unselect a menu item, but when I restart I want that to stay
最佳答案
正如我的评论中提到的,您最好将设置/配置保存在属性或数据库中。但是......如果您绝对需要更改 FXML 文件,您可以将其内容保存在文件或数据库中。这不是最好的解决方案,但我过去见过这样做的。我以前的一家公司允许用户按用户组修改 FXML 文件,这并不完全相同(本质上这是一次不频繁的保存),如果您这样做,则需要在每次退出/更改时保存 FXML 内容.
在较高的层面上,您需要:
- 每次属性更改后,读入文件并手动处理 DOM。
- 将更新的文件内容写入磁盘或数据库
- 更新您的 fxml 加载以首先查看磁盘/数据库,如果不存在则回退到资源版本
这是可能的,但它并不完美 - 特别是在按用户按属性级别的用户上。最烦人的部分是每次单击按钮时都会更新 DOM。
关于java - 执行操作后如何更改 fxml 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55867443/