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