如何在执行操作后更改fxml文件?

问题描述 投票:0回答:1

我即将完成数据库应用程序,我找不到有关如何更改编码器的fxml文件中编写的代码和默认值的解决方案。

我有一个带有列的Tableview和那些列的CheckMenuItems。所选列的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

java javafx fxml scenebuilder
1个回答
0
投票

正如我的评论中所提到的,您最好在属性或数据库中保存设置/配置。但是......如果您绝对需要更改FXML文件,可以将其内容保存在文件或数据库中。这不是最好的解决方案,但我已经看到它在过去完成了。我以前的一家公司允许用户按用户组修改FXML文件,这不完全相同(实际上这是一种不常见的保存),如果你这样做,你将需要在每次退出/更改时保存FXML内容。

在高层次上,您需要:

  • 读取文件并在每次更改属性后手动处理DOM。
  • 将更新的文件内容写入磁盘或数据库
  • 更新fxml加载以首先查看磁盘/数据库,如果不存在,则返回资源版本

这是可能的,但它并不漂亮 - 特别是用户按用户级别对用户。每次点击按钮完成时,最烦人的部分是更新DOM。

© www.soinside.com 2019 - 2024. All rights reserved.