单击两个jbuttons后的java swing动作事件

时间:2015-05-25 13:18:29

标签: java swing jbutton mouselistener

我正在尝试仅在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");
        }
    }
}

2 个答案:

答案 0 :(得分:2)

此代码有两个问题。

  1. 未覆盖父类的方法。 MouseClicked应该是mouseClicked(小写的第一个字母)和父(超级)类一样,以便覆盖它并捕获鼠标事件。
  2. 使用嵌套的if-else语句没有意义,因为每次点击都会调用此方法,并且不会保存以前点击其他按钮的状态。
  3. 此代码适合您。

    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
        }
    
    }
    

答案 1 :(得分:0)

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