2016-11-19 146 views
2
if(clicked == button) { 
    button.setIcon(image1); 
    if(clicked == button2) { 
     button2.setIcon(image2) 
     button1.setIcon(image0) 
    } 
} 

基本上我想要的代码做的,就是在点击“button”它的形象将被设置为“image1”和出现这种情况后(特别是不前)如果另一个按钮被点击,它会将该按钮(按钮2)设置为'image2',并且使第一个按钮显示'image0'它是“空闲”图像。麻烦与“if语句”内的其他“if语句”

现在如果所有这些都有意义,我想知道为什么点击'按钮'后点击'button2'没有做任何事情的答案。

是的,我有动作侦听器,以及为JLabels等设置的所有内容,我需要帮助的是获取另一个if语句内部的if语句以便在第一个if语句之后'运行',并且仅当点击第一个'button'。

+5

您不能在同一个点击处理程序中执行此操作。每个点击处理程序仅对单个用户事件起作用并立即返回。然后用户再次点击并调用第二个处理程序。你不能在那里等待下一个事件。你可以做的是记录第一次点击发生的事实(以便后面的处理程序可以对这个“状态”进行操作)。或者可能添加另一个不在之前的点击处理程序。 – Thilo

+0

你已经在按钮1点击事件中应用了按钮2点击事件,所以它不会随时执行,因为它将检查按钮1,然后点击将始终是按钮1,因此它永远不会进入按钮2,如果点击按钮2那么它不会从第一个里面,如果条件,所以这是不正确的逻辑,使之成为可能分开这两个事件和适用于它的标志,然后只有它会工作 – Vickyexpert

回答

0

您已经在按钮1点击事件中应用了按钮2点击事件,因此它不会随时执行,因为它会检查按钮1,然后点击将始终按钮1,因此它永远不会进入按钮2,如果点击将按钮2,那么它不会从第一里面去,如果状态,所以这是不正确的逻辑,

为了能够独立的两个事件,并为其申请标志,则只有将工作如下答案

检查

//Declare one variable at top like below 
boolean isButtonClicked = false; 

    if(clicked == button) 
    { 
     button.setIcon(image1); 
     isButtonClicked = true; 
    } 
    else if(clicked == button2) 
    { 
     if(isButtonClicked) 
     { 
      button2.setIcon(image2); 
      button1.setIcon(image0); 
      isButtonClicked = false; 
     } 
    } 
0

您将不得不声明至少一个私有布尔变量来检查第一个按钮是否被点击。

然后,您将使用逻辑运算符和(&)运算符来检查在点击另一个按钮之前是否单击了第一个按钮。

private boolean firstBtnClicked = false; 

然后,你将如下修改代码:

if(clicked == button) { 
button.setIcon(image1); 
firstBtnClicked = true; 
} 
if(firstBtnClicked == true && clicked == button2) { 
    button2.setIcon(image2); 
    button1.setIcon(image0); 
} 

我希望这个作品。