当前位置: 首页 > 知识库问答 >
问题:

在javafx中获取菜单项快捷方式操作

郎献
2023-03-14

我的代码像:

 public static int mShortcut=50;

 @FXML private void OnSignIn(ActionEvent event )
 {

      setShortcut(101);
      CheckShortCut();


 }
 public void setShortcut(int shortcut) 
{
     mShortcut=shortcut;  
     mMenuItemProdType.getAccelerator();
     CheckShortCut();

}
 public  void CheckShortCut()
{
    switch(mShortcut)
    {
        case 101:
             System.out.println("Enter in 3 Case");

             mMenuItemProdType.setAccelerator(new KeyCodeCombination(KeyCode.T, KeyCombination.CONTROL_DOWN, KeyCodeCombination.SHORTCUT_DOWN));
             break;
        case 50:
              System.out.println("Enter in 50 Case");

             mMenuItemProdType.setAccelerator(null);
            break;
         default:
             mMenuItemProdType.setAccelerator(null);
             break;
    }

} 

我的需求用户如果没有登录就不能访问快捷键,所以在OnSignIn中我放了两个方法set shortcut(101);和check shortcut();但是在上面的代码中,登录后,我不能获得快捷方式事件,所以有什么想法我可以解决它吗?

共有1个答案

岳朝
2023-03-14

我通过禁用菜单项解决了这个问题。

@FXML private MenuItem signMenuItem;
@FXML private MenuItem openMenuItem;
@FXML private MenuItem saveMenuItem;

@FXML
private void OnSignIn(ActionEvent event) {
    if (sign("admin", "1234")) {
        openMenuItem.setDisable(false);
        saveMenuItem.setDisable(false);
    }
}

private boolean sign(String name, String pass) {
    // do sign in
    return true;
}
@Override
public void initialize(URL fxmlFileLocation, ResourceBundle resources) {
    this.signMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.ENTER, KeyCombination.CONTROL_DOWN, KeyCombination.SHORTCUT_DOWN));
    this.openMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.O, KeyCombination.CONTROL_DOWN, KeyCombination.SHORTCUT_DOWN));
    this.saveMenuItem.setAccelerator(new KeyCodeCombination(KeyCode.S, KeyCombination.CONTROL_DOWN, KeyCombination.SHORTCUT_DOWN));
    openMenuItem.setDisable(true);
    saveMenuItem.setDisable(true);
}
 类似资料:
  • 您可在单项训练暂停期间,以及多项运动训练过渡模式期间,在训练准备模式下访问快捷菜单。在训练准备模式中,您可通过轻触图标或使用 LIGHT(背光灯)按钮访问快捷菜单。在暂停和过渡模式中,仅可使用 LIGHT(背光灯)按钮访问快捷菜单。 快捷菜单中显示的选项取决于您选择的运动,以及是否正在使用 GPS。   节能设置: 节能设置允许您通过更改 GPS 记录速率,关闭手腕型心率测量和使用屏幕保护程序,延

  • 您可在单项训练暂停期间,以及多项运动训练过渡模式期间,在训练准备模式下访问快捷菜单。在训练准备模式中,您可通过轻触图标或使用 LIGHT(背光灯)按钮访问快捷菜单。在暂停和过渡模式中,仅可使用 LIGHT(背光灯)按钮访问快捷菜单。 快捷菜单中显示的选项取决于您选择的运动,以及是否正在使用 GPS。   节能设置: 节能设置允许您通过更改 GPS 记录速率,关闭手腕型心率测量和使用屏幕保护程序,延

  • 问题内容: 我正在考虑Tkinter菜单标签(命令)的快捷方式。在Mac上,与cmd combination的组合很常见。 到目前为止,我只发现了。如何实现cmd⌘快捷方式? 再想一想-应用程序完成后-将其转换为Windows和Mac应用程序的可执行文件可能会在使用cmd⌘时引起困难?处理此问题的最佳方法是什么? 问题答案: 我认为您需要指定Tk内置命令中列出的 Meta和M 修饰符之一-也许代替

  • Windows95和Windows 3.x在界面上的一个重大差别就是Windows95增加了功能强大的右键快捷菜单。在任何一个对象上按鼠标右键,就会弹出一个与所选当前对象相关的菜单,菜单中列出了一组针对当前对象的操作。在Visual Studio中就有大量这样的菜单。比如,在项目工作区中单击右键时弹出菜单,让用户选择Docking View(停泊视图)、Hide(隐藏)和Properties(属性

  • 我已经创建了一个类,它扩展了JavaFX的MenuBar,为我的应用程序创建了菜单栏。 默认情况下,我不会禁用专门的操作,比如打开/保存文件和运行模拟(它们确实是禁用的)。当用户运行应用程序时,他们可以在菜单文件中选择一个项目 我计划通过让每个组件给出它切换到的项目的列表来做到这一点,然后在创建组件时激活适当的项目。 但是,我不能从函数内部访问菜单列表(我尝试用< code>this.getMen

  • WooCommerce网站的插件一般较多,这样后台菜单会很长,想找到自己想用的功能会有困难。因此,本文介绍一种在wp admin bar增加WooCommerce admin bar快捷菜单的方法。 本文用到了自定义WordPress admin bar菜单中提到的方法。 WooCommerce admin bar快捷菜单代码 代码放在子主题的functions.php中。 if( is_user