0

私のコードは次のようになります:

 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に2つのメソッドsetShortcut(101);を配置します。およびCheckShortCut(); しかし、ログインした後の上記のコードでは、ショートカットイベントを取得できないので、どのように解決できますか?

4

1 に答える 1

0

メニュー項目を無効にすることでこの問題を解決しました。

@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);
}
于 2013-01-25T10:03:08.733 に答える