Загрузить ускорители MenuItem в FXML из файла конфигурации? - PullRequest
0 голосов
/ 05 октября 2018

Я занимаюсь разработкой приложения, которое теперь имеет обширное меню с ускорителями.

Я ищу способ, позволяющий пользователю связывать клавиши для определенных функций и сохранять привязки клавиш дляследующий запуск.

Есть ли способ загрузить ускорители MenuItem для файла FXML из файла конфигурации?

В противном случае мне, вероятно, потребуется сериализовать карту для каждой функции MenuItem в отдельности.

Заранее спасибо за любую информацию.

1 Ответ

0 голосов
/ 05 октября 2018

Вы можете использовать KeyCombination.getName () , чтобы получить String представление MenuItem ускорителя и KeyCombination.keyCombination (String) , чтобы создать MenuItem ускорительиз String представления.Смотрите пример:

KeyCombination accelerator =  new KeyCodeCombination(KeyCode.D, KeyCombination.CONTROL_DOWN);
MenuItem menuItem = new MenuItem("Click me");
menuItem.setAccelerator(accelerator);

...

//save accelerator to the config file
String accString = menuItem.getAccelerator().getName();
saveAcceleratorToConfig(accString); // save string to file

...

//load accelerator from the config file
String accString = loadAcceleratorFromConfig(); //load string from file
menuItem.setAccelerator(KeyCombination.keyCombination(accString));
...