按Enter键将光标从一个JTextField传输到另一个JTextField?

时间:2013-05-10 10:56:42

标签: java swing focus awt focusmanager

我有一个JTextField名为Name,一个JTextArea名为Address。我的要求是当用户在JTextField中输入名称并按 Enter 键时,光标应该转到下一个文本区域,即地址。

目前,可以通过按Tab键(我认为是默认值)从一个文本字段移动到另一个文本字段。我想禁止此操作并仅通过 ENTER 键传输光标。

我已尝试过transferfocus(),但输入键并未将光标移至文本区域。我如何实现这一目标?

3 个答案:

答案 0 :(得分:1)

  

我的要求是当用户在JTextField中输入名称并按下回车键时,光标应该转到下一个文本区域,即地址。

假设组件以正常的标签顺序相互跟随,您可以编写通用代码:

Action enterAction = new AbstractAction()
{
    @Override
    public void actionPerformed(ActionEvent e)
    {
        KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
        manager.getFocusOwner().transferFocus();
    }
}

...

textField.addActionListener( enterAction );
  

目前,可以通过按Tab键(我认为是默认值)从一个文本字段移动到另一个文本字段。我想禁止这个,只通过ENTER键传输光标。

你为什么要禁止这个。正如你所说tab是默认值,因此大多数用户都会熟悉这种方法。不要重新发明UI并让用户做出选择。

答案 1 :(得分:0)

我认为你使用Swing..Sorry进行延迟回复..

JTextField - >右键单击 - >转到按键事件

private void NameKeyPressed(java.awt.event.KeyEvent evt) {
        int a = evt.getKeyCode();
        if (a == 10) {                     // for enter key
          Address.requestFocus();
        } 
}

答案 2 :(得分:-1)

@ satya的答案是正确的,但是为避免魔术数字的轻微改动是:

private void jTextFieldItmCodeKeyPressed(java.awt.event.KeyEvent evt) {                                             
    if(evt.getKeyCode()==KeyEvent.VK_ENTER){
       Address.requestFocus();
    }   
}