如何使用 MouseClicked 事件来防止 mouseExited 事件?
How To use MouseClicked event to prevent mouseExited event?
我有一个简单的 java swing 代码,其中当按钮悬停并单击时文本字段会发生变化,但是当我使用变量来停用 mouseExited 事件时,它不起作用并继续更改文本字段。我认为它与仅对 mouseClicked 事件可用的变量有关?我将如何解决这个问题。谢谢
我的导入是 java.awt 和 javax.swing
public static void main(String[] args) {
boolean check = true;
JFrame f =new JFrame("ActionListener Example");
JTextField tf = new JTextField("You should press button 1");
tf.setBounds(100,100, 150,20);
JButton b=new JButton("Click Here");
b.setBounds(50,100,60,30);
//2nd step
b.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
tf.setText("you did it");
boolean check = false;
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
tf.setText("DO IT!");
}
@Override
public void mouseExited(MouseEvent e) {
if (check) {
tf.setText("You should press the button");
}
}});
f.setLayout(new FlowLayout());
f.setSize(400,400);
f.add(b);
f.add(tf);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
I think its to do with the variable only being available to the mouseClicked event? How would i fix this.
然后不要在 mouseClicked 方法中定义第二个“check”变量。
//boolean check = false;
check = false;
编辑:
Local variable check defined in an enclosing scope must be final or effectively final
开始重写整个 class 以提供更好的结构。
阅读 How to Use Buttons... 上的 Swing 教程部分。下载ButtonDemo
代码并修改。
演示代码将向您展示如何构建代码,以便
- 所有代码均未包含在 main() 方法中:
- 您使用布局管理器
- 您在事件调度线程 (EDT) 上创建 GUI
- 您的 class 可以使用“实例”变量,而不是局部变量。您“检查”变量将是一个实例变量。
我有一个简单的 java swing 代码,其中当按钮悬停并单击时文本字段会发生变化,但是当我使用变量来停用 mouseExited 事件时,它不起作用并继续更改文本字段。我认为它与仅对 mouseClicked 事件可用的变量有关?我将如何解决这个问题。谢谢
我的导入是 java.awt 和 javax.swing
public static void main(String[] args) {
boolean check = true;
JFrame f =new JFrame("ActionListener Example");
JTextField tf = new JTextField("You should press button 1");
tf.setBounds(100,100, 150,20);
JButton b=new JButton("Click Here");
b.setBounds(50,100,60,30);
//2nd step
b.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
tf.setText("you did it");
boolean check = false;
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
tf.setText("DO IT!");
}
@Override
public void mouseExited(MouseEvent e) {
if (check) {
tf.setText("You should press the button");
}
}});
f.setLayout(new FlowLayout());
f.setSize(400,400);
f.add(b);
f.add(tf);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
I think its to do with the variable only being available to the mouseClicked event? How would i fix this.
然后不要在 mouseClicked 方法中定义第二个“check”变量。
//boolean check = false;
check = false;
编辑:
Local variable check defined in an enclosing scope must be final or effectively final
开始重写整个 class 以提供更好的结构。
阅读 How to Use Buttons... 上的 Swing 教程部分。下载ButtonDemo
代码并修改。
演示代码将向您展示如何构建代码,以便
- 所有代码均未包含在 main() 方法中:
- 您使用布局管理器
- 您在事件调度线程 (EDT) 上创建 GUI
- 您的 class 可以使用“实例”变量,而不是局部变量。您“检查”变量将是一个实例变量。