2014-12-19 51 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()