User interface 当鼠标位于JTextField时,仅当按下ENTER键时才运行特定代码的侦听器?

User interface 当鼠标位于JTextField时,仅当按下ENTER键时才运行特定代码的侦听器?,user-interface,listener,jtextfield,User Interface,Listener,Jtextfield,下面是分别按下ENTER键和文本字段中鼠标的代码。我需要的是,当按下ENTER键时,当鼠标位于JTextField内时,程序才运行我的代码。谢谢你的帮助 string是我命名的JTextField 该程序所做的是获取一个字符串,然后在单击JButton或按下ENTER时鼠标位于JField时显示其相反方向 addActionListener(新ActionListener(){ })) 您可以定义一个字段,以检查鼠标是否位于textfield中。然后,当按下ENTER键且此字段为true时,让代

下面是分别按下ENTER键和文本字段中鼠标的代码。我需要的是,当按下ENTER键时,当鼠标位于JTextField内时,程序才运行我的代码。谢谢你的帮助

string是我命名的JTextField 该程序所做的是获取一个字符串,然后在单击JButton或按下ENTER时鼠标位于JField时显示其相反方向

addActionListener(新ActionListener(){


}))

您可以定义一个字段,以检查鼠标是否位于textfield中。然后,当按下ENTER键且此字段为
true
时,让代码运行

请看下面的代码:

package test;

import java.awt.BorderLayout;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

public class Test extends JFrame {
    private static final long serialVersionUID = -3677708759387911324L;
    private boolean mouseInField = false;

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            new Test().setVisible(true);
        });
    }

    public Test() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(300, 300);
        JTextField textField = new JTextField(15);
        getContentPane().add(textField, BorderLayout.PAGE_START);
        textField.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseEntered(MouseEvent e) {
                mouseInField = true;
                System.out.println("mouse entered");
            }

            @Override
            public void mouseExited(MouseEvent e) {
                mouseInField = false;
                System.out.println("mouse exited");
            }
        });
        textField.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                if (e.getKeyCode() == KeyEvent.VK_ENTER && mouseInField)
                    System.out.println("enter is pressed while mouse is in text field.");
            }
        });
    }
}
package test;

import java.awt.BorderLayout;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

public class Test extends JFrame {
    private static final long serialVersionUID = -3677708759387911324L;
    private boolean mouseInField = false;

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            new Test().setVisible(true);
        });
    }

    public Test() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(300, 300);
        JTextField textField = new JTextField(15);
        getContentPane().add(textField, BorderLayout.PAGE_START);
        textField.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseEntered(MouseEvent e) {
                mouseInField = true;
                System.out.println("mouse entered");
            }

            @Override
            public void mouseExited(MouseEvent e) {
                mouseInField = false;
                System.out.println("mouse exited");
            }
        });
        textField.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                if (e.getKeyCode() == KeyEvent.VK_ENTER && mouseInField)
                    System.out.println("enter is pressed while mouse is in text field.");
            }
        });
    }
}