Как изменить файл fxml после выполнения действия? - PullRequest
0 голосов
/ 26 апреля 2019

Я собираюсь закончить с приложением базы данных, и я не смог найти решение о том, как изменить код и значения по умолчанию, которые записаны в fxml-файле контроллера.

У меня есть Tableviewсо столбцами и CheckMenuItems для этих столбцов.CheckMenuItems для тех выбранных столбцов должны быть видимыми столбцами.Невыбранные элементы не должны быть видны.

У меня уже был такой успех, когда столбцы исчезают после отмены выбора CheckMenuItem:

    @FXML
        public void checkNR(ActionEvent event) {
            if(!checkMenuItemNR.isSelected()) {
                tablecolumnNR.setVisible(false);
            }
            if(checkMenuItemNR.isSelected()) {
                tablecolumnNR.setVisible(true);
            }

Мои ожидаемые результаты в порядке, поэтомудалеко при использовании программы один раз.Но если я запускаю его снова, все снова устанавливается по умолчанию, и я вижу все столбцы.

Мне нужно изменить последнюю строку в приведенном ниже коде, для выбранного будет установлено значение false, если я откажусь от этого CheckMenuItem.

 <Menu mnemonicParsing="false" text="Spalten">
           <items>
              <CheckMenuItem fx:id="checkMenuItemNR" mnemonicParsing="false" onAction="#checkNR" selected="true" text="NR" />

CheckMenuItems для каждого столбца, выбранного в начале программы

столбцы исчезают, если я отменяю выбор пункта меню, но при перезапуске яхочу что бы остаться

1 Ответ

0 голосов
/ 26 апреля 2019

Как уже упоминалось в моих комментариях, вам, вероятно, лучше сохранить настройки / конфигурацию в свойствах или базе данных. НО ..... если вам абсолютно необходимо изменить файл FXML, вы можете сохранить его содержимое в файле или базе данных. Это не самое лучшее решение, но я видел, как это было сделано в прошлом. Моя предыдущая компания позволяла пользователям изменять файлы FXML по группам пользователей, что не совсем то же самое (по сути, это было нечастое сохранение), где, если вы сделаете это, вам будет необходимо сохранять содержимое FXML при каждом выходе / изменении .

На высоком уровне вам нужно:

  • Считайте файл и обработайте DOM вручную после каждого изменения свойства.
  • Записать обновленное содержимое файла на диск или в базу данных
  • Обновите загрузку fxml, чтобы сначала посмотреть на диск / базу данных, а если ничего не существует, вернитесь к версии ресурса

Это возможно, но это не красиво - особенно для пользователя за пользователем по уровню свойства. Самая раздражающая часть будет обновлять DOM каждый раз, когда нажата кнопка.

...