gpt4 book ai didi

java - Switch 语句没有正确递增

转载 作者:行者123 更新时间:2023-12-01 12:17:31 25 4
gpt4 key购买 nike

我有一个名为 nextAd 的按钮,每次单击它时应该显示一组不同的图像,但当我单击它时什么也没有出现。

问题:为什么我的 switch 语句没有导致显示不同的图像?

最好不使用数组

  public class AdvertisementPanel extends JPanel {

Advertisement apple = new Advertisement("Apple", new ImageIcon("./src/AppleAdvertisement.jpg"), new ImageIcon ("./src/AppleLogo.jpg"));
Advertisement IBM = new Advertisement("IBM", new ImageIcon("./src/IBMAdvertisement.jpg"), new ImageIcon ("./src/IBMLogo.jpg"));
Advertisement microsoft = new Advertisement("Microsoft", new ImageIcon("./src/MicrosoftAdvertisement.jpg"), new ImageIcon ("./src/MicrosoftLogo.jpg"));
Advertisement samsung = new Advertisement("Samsung", new ImageIcon("./src/SamsungAdvertisement.jpg"), new ImageIcon ("./src/SamsungLogo.jpg"));

JLabel appleTitle = new JLabel(apple.getTitle());
JLabel IBMTitle = new JLabel(IBM.getTitle());
JLabel microsoftTitle = new JLabel(microsoft.getTitle());
JLabel samsungTitle = new JLabel(samsung.getTitle());

JLabel appleAdPic = new JLabel(apple.getPicture1());
JLabel IBMAdPic = new JLabel(IBM.getPicture1());
JLabel microsoftAdPic = new JLabel(microsoft.getPicture1());
JLabel samsungAdPic = new JLabel(samsung.getPicture1());

JLabel appleLogo = new JLabel(apple.getPicture2());
JLabel IBMLogo = new JLabel(IBM.getPicture2());
JLabel microsoftLogo = new JLabel(microsoft.getPicture2());
JLabel samsungLogo = new JLabel(samsung.getPicture2());

JButton nextAd = new JButton("Click for the next advertisement");

public AdvertisementPanel()
{

//set up panel
setPreferredSize(new Dimension(1200,1000));
setBackground(Color.gray);

//adds action listener to button
nextAd.addActionListener(new buttonListener());

//for Apple
add(appleTitle);
add(appleAdPic);
add(appleLogo);

//for IBM
add(IBMTitle);
add(IBMAdPic);
add(IBMLogo);
IBMTitle.setVisible(false);
IBMAdPic.setVisible(false);
IBMLogo.setVisible(false);

//for Microsoft
add(microsoftTitle);
add(microsoftAdPic);
add(microsoftLogo);
microsoftTitle.setVisible(false);
microsoftAdPic.setVisible(false);
microsoftLogo.setVisible(false);

//for Samsung
add(samsungTitle);
add(samsungAdPic);
add(samsungLogo);
samsungTitle.setVisible(false);
samsungAdPic.setVisible(false);
samsungLogo.setVisible(false);

//for Button
add(nextAd);

private class buttonListener implements ActionListener

{
private int i = 0;

@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':{
IBMAdPic.setVisible(false);
IBMLogo.setVisible(false);
microsoftAdPic.setVisible(true);
microsoftLogo.setVisible(true);
break;
}
case '3':{

microsoftAdPic.setVisible(false);
microsoftLogo.setVisible(false);
samsungAdPic.setVisible(true);
samsungLogo.setVisible(true);
break;
}
}

最佳答案

  1. case '1': 您正在与 char(文字 ASCII 字符 1)进行比较,而不是数字。 1 在 ASCII 中是 49,所以你并没有真正与你认为的自己进行比较。

  2. case foo: 后面的大括号是不必要的。 break 语句实际上是打破了 block ,而不是打破了 case,因此您应该删除 {}

  3. 您在点击监听器内部设置了 private int = 0,因此它始终设置为 0,然后递增到 1,这不会执行任何操作。您需要在监听器外部声明它。

关于java - Switch 语句没有正确递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26900852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com