有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

按Enter键时java将光标从一个JTextField转移到另一个JTextField?

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

目前,可以通过按tab键(我认为这是默认设置)从一个文本字段移动到另一个文本字段。我希望禁止此操作,并仅通过回车键转移光标

我已经尝试了transferfocus(),但是回车键并没有将光标移到文本区域。我如何做到这一点


共 (3) 个答案

  1. # 1 楼答案

    我想你用秋千。。对不起,迟了答复

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

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

    My requirement is when user has entered name in the JTextFieldand pressed enter key the cursor should go to the next text area which is Address.

    假设组件按照正常的选项卡顺序彼此跟随,则可以编写常规代码:

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

    Currently one can move from one textfield to other by pressing the tab key (which I believe is default). I would like to prohibit this and transfer the cursor only via the ENTER key.

    你为什么要禁止这种行为。正如您所说,选项卡是默认的,因此大多数用户都熟悉这种方法。不要重新发明UI,而是给用户一个选择

  3. # 3 楼答案

    @satya的答案是正确的,但是为了避免使用魔法数字,需要做一点小小的改动:

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