我有一个名为nextAd
的JButton,每次点击它时会增加private int i;
加1,这会在每次点击时显示不同的图像。第四次单击按钮后,我希望我的GUI循环回到按钮被单击0次时,显示我第一次运行程序时最初在屏幕上显示的内容。
问题:当我第一次启动GUI程序时,如何让我的switch
语句循环回到屏幕上最初的内容?
除了单击按钮的操作外,我省略了其余的代码。如果需要更多代码才能回答问题,请告知我们。
private class buttonListener implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e)
{
{
if(e.getSource() == nextAd)
{
i++;
}
switch (i){
case 1:
appleTitle.setVisible(false);
appleAdPic.setVisible(false);
appleLogo.setVisible(false);
IBMTitle.setVisible(true);
IBMAdPic.setVisible(true);
IBMLogo.setVisible(true);
break;
case 2:
IBMTitle.setVisible(false);
IBMAdPic.setVisible(false);
IBMLogo.setVisible(false);
microsoftTitle.setVisible(true);
microsoftAdPic.setVisible(true);
microsoftLogo.setVisible(true);
break;
case 3:
microsoftTitle.setVisible(false);
microsoftAdPic.setVisible(false);
microsoftLogo.setVisible(false);
samsungTitle.setVisible(true);
samsungAdPic.setVisible(true);
samsungLogo.setVisible(true);
break;
}
}
}
}
}
答案 0 :(得分:0)
您可以将事件处理程序的开头更改为:
if(e.getSource() == nextAd)
{
i = (i == 3 ? 1 : i + 1);
}
答案 1 :(得分:0)
我认为最简单的解决方案就是在actionPerformed()结束时将增量值设置为0,如果i == 3;
public void actionPerformed(ActionEvent event) {
// ...
if (i == 3) {
i = 0; // Reset the ad counter to 0, to restart the ad loop
}
}
这样,下次调用actionPerformed()
时,它将从头开始。
答案 2 :(得分:0)
我们可以没有默认情况,你可以在里面设置所谓的0次情景吗?
例如:
default:
appleTitle.setVisible(false);
appleAdPic.setVisible(false);
appleLogo.setVisible(false);
IBMTitle.setVisible(false);
IBMAdPic.setVisible(false);
IBMLogo.setVisible(false);
break;
答案 3 :(得分:0)
可能最好的方法是将switch语句放入返回类型为void的单独方法中,就像
一样private class buttonListener implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e)
{
{
if(e.getSource() == nextAd)
{
i++;
}
switching()
}
}
}
public static void switching() {
switch (i){
case 1:
appleTitle.setVisible(false);
appleAdPic.setVisible(false);
appleLogo.setVisible(false);
IBMTitle.setVisible(true);
IBMAdPic.setVisible(true);
IBMLogo.setVisible(true);
break;
case 2:
IBMTitle.setVisible(false);
IBMAdPic.setVisible(false);
IBMLogo.setVisible(false);
microsoftTitle.setVisible(true);
microsoftAdPic.setVisible(true);
microsoftLogo.setVisible(true);
break;
case 3:
microsoftTitle.setVisible(false);
microsoftAdPic.setVisible(false);
microsoftLogo.setVisible(false);
samsungTitle.setVisible(true);
samsungAdPic.setVisible(true);
samsungLogo.setVisible(true);
break;
}
case 4:
i = 0;
switching();
break;
}
答案 4 :(得分:0)
以下是我要做的事情:
if (e.getSource() == nextAd) {
if (i >= 3) {
i = 1;
} else {
i++;
}
}
答案 5 :(得分:0)
这是我的解决方案。 谢谢大家!
if(e.getSource() == nextAd)
{
i++;
{
if(i == 5)
{
i = 0;
samsungTitle.setVisible(false);
samsungAdPic.setVisible(false);
samsungLogo.setVisible(false);
}
switch (i){
case 1:
appleTitle.setVisible(true);
appleAdPic.setVisible(true);
appleLogo.setVisible(true);
break;
case 2:
appleTitle.setVisible(false);
appleAdPic.setVisible(false);
appleLogo.setVisible(false);
IBMTitle.setVisible(true);
IBMAdPic.setVisible(true);
IBMLogo.setVisible(true);
break;
case 3:
IBMTitle.setVisible(false);
IBMAdPic.setVisible(false);
IBMLogo.setVisible(false);
microsoftTitle.setVisible(true);
microsoftAdPic.setVisible(true);
microsoftLogo.setVisible(true);
break;
case 4:
microsoftTitle.setVisible(false);
microsoftAdPic.setVisible(false);
microsoftLogo.setVisible(false);
samsungTitle.setVisible(true);
samsungAdPic.setVisible(true);
samsungLogo.setVisible(true);
break;
}
}
}
}
}
}
}