【问题标题】:Load MenuItem accelerators into FXML from a configuration file?从配置文件将 MenuItem 加速器加载到 FXML 中?
【发布时间】:2018-10-04 21:18:23
【问题描述】:

我正在开发一个应用程序,它现在有一个带有加速器的扩展菜单。

我正在寻找一种方法,使用户可以为某些功能绑定键并保存键绑定以供下次启动。

有没有办法从配置文件中为 FXML 文件加载 MenuItem 加速器?

否则,我可能需要为每个 MenuItem 函数单独序列化一个映射。

提前感谢您提供任何信息。

【问题讨论】:

  • 您可能会尝试将它们存储在 resourceBundle 中,然后使用resource substitution 查找它们
  • @kleopatra 我没有时间尝试这个,但这似乎是一个不错的解决方案。感谢您的信息!

标签: javafx config fxml menuitem accelerator


【解决方案1】:

您可以使用KeyCombination.getName() 获取MenuItem 加速器的String 表示,并使用KeyCombination.keyCombination(String)String 表示创建MenuItem 加速器。见例子:

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));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-22
    • 1970-01-01
    • 2017-10-12
    • 2018-10-30
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多