检测在JTextField中输入press

时间:2010-12-11 23:48:37

标签: java swing jtextfield

在java中输入JTextField时,是否有可能检测到有人按 Enter ?无需创建按钮并将其设置为默认值。

10 个答案:

答案 0 :(得分:159)

JTextField被设计为使用ActionListener就像JButton一样。请参阅addActionListener()的{​​{1}}方法。

例如:

JTextField

现在,当使用 Enter 键时会触发该事件。

此外,即使您不想将按钮设为默认按钮,您还可以使用按钮共享监听器。

Action action = new AbstractAction()
{
    @Override
    public void actionPerformed(ActionEvent e)
    {
        System.out.println("some action");
    }
};

JTextField textField = new JTextField(10);
textField.addActionListener( action );

注意,此示例使用JButton button = new JButton("Do Something"); button.addActionListener( action ); ,它实现Action,因为ActionListener是具有附加功能的较新API。例如,您可以禁用Action,这将禁用文本字段和按钮的事件。

答案 1 :(得分:21)

JTextField function=new JTextField(8);   
function.addActionListener(new ActionListener(){

                public void actionPerformed(ActionEvent e){

                        //statements!!!

                }});

你需要做的就是将addActionListener添加到JTextField中,如上所述!按 Enter 后,操作将在声明中执行您想要的操作!

答案 2 :(得分:13)

KeyPressed添加活动。

private void jTextField1KeyPressed(java.awt.event.KeyEvent evt) {
  if(evt.getKeyCode() == KeyEvent.VK_ENTER) {
      // Enter was pressed. Your code goes here.
   }
} 

答案 3 :(得分:5)

你想做这样的事吗?

JTextField mTextField = new JTextField();
    mTextField.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if(e.getKeyCode() == KeyEvent.VK_ENTER){
                // something like...
               //mTextField.getText();
               // or...
               //mButton.doClick();
            }
        }

    });

答案 4 :(得分:1)

首先在JButton或JTextField上添加动作命令:

JButton.setActionCommand("name of command");
JTextField.setActionCommand("name of command");

然后将ActionListener添加到JTextField和JButton。

JButton.addActionListener(listener);
JTextField.addActionListener(listener);

之后,On you ActionListener实现写

@Override
public void actionPerformed(ActionEvent e)
{
    String actionCommand = e.getActionCommand();

    if(actionCommand.equals("Your actionCommand for JButton") || actionCommand.equals("Your   actionCommand for press Enter"))
    {
        //Do something
    }
}

答案 5 :(得分:1)

其他答案(包括已接受的答案)都很好,但如果您已经使用Java8,则可以执行以下操作(以更短,更新的方式):

textField.addActionListener(
    ae -> {
        //dostuff
    }
);

正如接受的答案所说,你可以简单地用ActionListener做出反应,这会抓住回车键。

但是,我的方法受益于Java 8中引入的功能概念。

如果要对按钮和JTextField使用相同的操作,则可以执行以下操作:

ActionListener l = ae -> {
    //do stuff
}

button.addActionListener(l);
textField.addActionListener(l);

如果需要进一步解释,请告诉我!

答案 6 :(得分:0)

如果要在JTextField输入中设置默认按钮操作,则必须执行以下操作:

//put this after initComponents();

textField.addActionListener(button.getActionListeners()[0]);

它是[0],因为按钮可以有很多动作,但通常只有一个(ActionPerformed)。

答案 7 :(得分:0)

对于框架中的每个文本字段,调用addKeyListener方法。然后实现并覆盖keyPressed方法,如其他人所指出的。现在,您可以从框架中的任何字段按Enter键以激活您的操作。

@Override
        public void keyPressed(KeyEvent e) {
            if(e.getKeyCode() == KeyEvent.VK_ENTER){
                //perform action
            }
        }

答案 8 :(得分:-2)

public void keyReleased(KeyEvent e)
{
    int key=e.getKeyCode();
    if(e.getSource()==textField)
    {
        if(key==KeyEvent.VK_ENTER)
        { 
            Toolkit.getDefaultToolkit().beep();
            textField_1.requestFocusInWindow();                     
        }
    }

要在JTextField中为“Enter press”编写逻辑,最好将逻辑保留在keyReleased()块内,而不是keyTyped()& keyPressed()

答案 9 :(得分:-3)

只需使用此代码:

SwingUtilities.getRootPane(myButton).setDefaultButton(myButton);