2013-01-24 11 views
0
에서 메뉴 항목 바로 가기 동작을 얻을

처럼 내 코드 :자바 FX

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

} 

그는 로그인하지 않은 경우 setShortcut 내가 두 가지 방법을 넣어 OnSignIn에, 그래서 (101) 바로 가기 키에 액세스 할 수 없습니다 내 요구 사항 사용자; 및 CheckShortCut(); 하지만 위의 코드에서 로그인 한 후 나는 짧은 컷 이벤트를 얻을 수 없다. 그래서 어떤 생각을 어떻게 해결할 수 있을까?

답변

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