2013-10-30 20 views
0

以下代码是应该使当在一定的JTextField(称为时间步长)被按压选项卡中的程序检测并在一个TextArea显示消息(称为textAreaInsructions),但它似乎没有工作。任何人都可以告诉我为什么?显示信息时标签在TextField中presed在Java

timeStep.setFocusTraversalKeys(
       KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, Collections.EMPTY_SET); 

     timeStep.addKeyListener(new KeyAdapter() { 
      public void keyPressed(KeyEvent evt) { 
       if(evt.getKeyCode() == KeyEvent.VK_TAB){ 
        instruction = "Enter a real number time step"; 
        textAreaInstructions.setText(instruction); 
        /* If you want to change the focus to the next component */ 
        //nextJComponent.grabFocus(); 
      } 
      } 
     }); 

回答

1

TAB键已被大多数摆动部件吃掉,因为它与场焦点控制有关。有处理它的方法不止一种,你可以尝试选择:

而是明确地倾听TAB键,你可以使用的FocusListener当焦点离开文本字段简单地检测。

注册一个键盘动作:JComponent.registerKeyboardAction(动作,击键,WHEN_IN_FOCUSED_WINDOW);为TAB键。

+0

我曾想过尝试你的第一个建议,但我想知道如何使压片来改变显示的指令的唯一途径。 –

+1

Java有一个叫做Javadoc的奇妙事物:http://docs.oracle.com/javase/7/docs/api/。用它。 – Durandal

+0

JComponent.registerKeyboardAction现在已经过时,但它似乎让我走上了正轨。我现在需要弄清楚如何使用getInputMap()和getActionMap()。 getInputMap()的参数是(KeyStroke,Object),而getActionMap()的参数是(Object,Action)。任何帮助非常感谢。 –