java 点击两个jbutton后的摆动动作事件

java swing action event after two jbuttons are clicked

我试图仅当在 jButton1 之后单击 jButton2 时才打印 "Hello",并且仅当在 jButton1 之后单击任何其他 jButton 时才打印 "Bye"。目前,以下代码不打印任何内容。

public void MouseClicked(java.awt.event.MouseEvent e){
   if (e.getSource() == jButton1) {
        if (e.getSource() == jButton2) {
            System.out.println ("Hello");
        } else {
            System.out.println ("Bye");
        }
    }
}

一个事件一次只能来自一个按钮。因此,在第一个按钮的 eventListener 中,添加将事件记录在布尔变量中的代码,然后检查第二个按钮的 eventListener 中的该变量,以确保两个按钮都已被单击。

这段代码有两个问题。

  1. 来自父 class 的方法未被覆盖。 MouseClicked 应该是 mouseClicked(小写的第一个字母),就像在父级(超级)class 中一样,以便它被覆盖并捕获鼠标事件。
  2. 没有必要使用嵌套的 if-else 语句,因为每次点击都会调用此方法,并且不会保存之前点击其他按钮的状态。

此代码适合您。

boolean button1ClickedLast = false;

public void mouseClicked(java.awt.event.MouseEvent e){
    if (e.getSource() == jButton1) {
        button1ClickedLast = true;
        System.out.println ("Bye");
    }
    else  if (e.getSource() == jButton2) {
        if(button1ClickedLast) {   
            System.out.println ("Hello");
        }
        else{
            // do nothing or something if you want
        }

    }
    else {
        button1ClickedLast = false; // to change status to false in case any other button is clicked last
    }

}