如何使switch语句循环回到开头

时间:2014-11-13 17:10:18

标签: java image events button

我有一个名为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;      
            }

        } 
        }
        }
    }

6 个答案:

答案 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;      
            }

        } 
        }
        }
    }
}


}