2014-12-19 68 views
3

我想在我的Swing應用程序中有一個自定義選項卡和Shift + Tab列表程序。當TAB鍵被按下=>InputMap for multiple keys

textField.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(
KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0), "Tab"); 

    textField.getActionMap().put("Tab", new AbstractAction() { 
     public void actionPerformed(ActionEvent e) { 
      navigateDown(); 
     } 
    }); 

這工作得很好了一個JTextField textField但是,我希望有Shift + Tab實施,我已經使用這個代碼: -

textField.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(
KeyStroke.getKeyStroke(KeyEvent.VK_SHIFT, KeyEvent.VK_TAB), "BackTab"); 

    textField.getActionMap().put("BackTab", new AbstractAction() { 
     public void actionPerformed(ActionEvent e) { 
      navigateUp(); 
     } 
    }); 

但是,這不適合我。感謝您的關注。

+0

通過不工作,你的意思是什麼也沒有發生? – fxm 2014-12-19 10:24:25

回答

4

您的擊鍵錯誤。第二個整數不是鍵碼,而是修飾符。

試試這樣說:

textField.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(
KeyStroke.getKeyStroke(KeyEvent.VK_TAB, java.awt.event.InputEvent.SHIFT_DOWN_MASK), "BackTab"); 

textField.getActionMap().put("BackTab", new AbstractAction() { 
    public void actionPerformed(ActionEvent e) { 
     navigateUp(); 
    } 
}); 

另見的JavaDoc上Keystroke.getKeyStroke()