完成操作后如何更改fxml文件?

时间:2019-04-26 12:16:00

标签: java javafx fxml scenebuilder

我即将完成数据库应用程序,但找不到如何更改写入控制器的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

1 个答案:

答案 0 :(得分:0)

正如我的评论中所述,最好将设置/配置保存在属性或数据库中。但是.....如果绝对需要更改FXML文件,则可以将其内容保存在文件或数据库中。这不是最大的解决方案,但我在过去已经看到过。我以前的公司允许用户按用户组修改FXML文件,这并不完全相同(本质上是很少保存),如果这样做,则每次退出/更改时都需要保存FXML内容。

从高层次上讲,您需要:

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

有可能,但这并不漂亮-特别是针对每个用户(按属性级别)。最烦人的部分是每次单击按钮时都会更新DOM。