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

标签 java javafx fxml scenebuilder

我即将完成数据库应用程序,但找不到有关如何更改 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/

相关文章:

java - 如何根据 JavaFX 中的内容设置窗口最小尺寸?

Java SceneBuilder设计单面板

java - 将参数传递给嵌套 Controller

java - 单击手机后退按钮时重置 Activity

java - JUnit 抛出 java.lang.NoClassDefFoundError : org/hamcrest/MatcherAssert

java - String#replaceAll() 方法不替换 $(美元)

java - 如何在 Oracle 8.x 系列中以编程方式替换字符

java - 如何拦截弹出窗口的隐藏以验证字段

java - 如何使用 JavaFX 中的时间轴更新标签的文本?

java - 滚动 Pane 不会调整大小以适应网格 Pane JavaFX