【问题标题】:Actionlistener and cycling through JLabels with a JButton: wrap around?Actionlistener 和使用 JButton 在 JLabels 中循环:环绕?
【发布时间】:2014-11-15 03:55:58
【问题描述】:

我已经大致弄清楚了:任务是制作四个不同的广告,当你点击下一个按钮时循环播放,当你到达第 4 号时,会绕到第 1 号。我不知道为什么会这样不回绕?

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.LayoutManager;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.URL;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class advertisementPanel extends JPanel {

public advertisementPanel() throws IOException{

    setPreferredSize(new Dimension(500, 200));
    URL url = new URL("http://www.geneca.com/wp-content/uploads/2013/03/mcdonalds-small-logo1.png");
    URL url2 = new URL("http://www.eatthis.com/uploads/wendys.jpg");
    URL url3 = new URL("http://www.scaredmonkeys.com/fun-images/KFC_20old_small.jpg");
    URL url4 = new URL("http://www.canaltagroup.com/images/aw_logo.gif");



    Image image = ImageIO.read(url);
    ImageIcon myIcon = new ImageIcon(image);
    JLabel adPicture1 = new JLabel(myIcon);
    Image image2 = ImageIO.read(url2);
    ImageIcon myIcon2 = new ImageIcon(image2);
    JLabel adPicture2 = new JLabel(myIcon2);
    Image image3 = ImageIO.read(url3);
    ImageIcon myIcon3 = new ImageIcon(image3);
    JLabel adPicture3 = new JLabel(myIcon3);
    Image image4 = ImageIO.read(url4);
    ImageIcon myIcon4 = new ImageIcon(image4);
    JLabel adPicture4 = new JLabel(myIcon4);

    JLabel myLabel1 = new JLabel("McDonald's");
    JLabel myLabel2 = new JLabel("20% off!");
    JLabel myLabel3 = new JLabel("Wendy's");
    JLabel myLabel4 = new JLabel("50% off!");
    JLabel myLabel5 = new JLabel("KFC's");
    JLabel myLabel6 = new JLabel("90% off!");
    JLabel myLabel7 = new JLabel("A&W's");
    JLabel myLabel8 = new JLabel("10% off!");

    JButton button = new JButton("next");

    setBackground(Color.white);
    add(adPicture1);
    add(myLabel1);
    add(myLabel2);


    button.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent myEvent) {


            if (getBackground() == Color.white) {
                setBackground(Color.green);
                myLabel1.setVisible(false);
                myLabel2.setVisible(false);
                adPicture1.setVisible(false);
                add(myLabel3);
                add(myLabel4);
                add(adPicture2);


            } else if (getBackground() == Color.green) {

                setBackground(Color.red);
                myLabel3.setVisible(false);
                myLabel4.setVisible(false);
                adPicture2.setVisible(false);
                add(myLabel5);
                add(myLabel6);
                add(adPicture3);

            } else if (getBackground() == Color.red) {

                setBackground(Color.pink);
                myLabel5.setVisible(false);
                myLabel6.setVisible(false);
                adPicture3.setVisible(false);
                add(myLabel7);
                add(myLabel8);
                add(adPicture4);

            } else if (getBackground() == Color.pink) {

                myLabel7.setVisible(false);
                myLabel8.setVisible(false);
                adPicture4.setVisible(false);
                add(myLabel1);
                add(myLabel2);
                add(adPicture1);
                setBackground(Color.white);

            }

            }


        });
        add(button);

    }

}

【问题讨论】:

    标签: java jpanel jbutton actionlistener jlabel


    【解决方案1】:

    您可能不想在每次单击按钮时都add() 标签和图片。也就是说,它们可能会被添加,但旧的不会被删除。因此它们被添加到面板可见区域之外。

    您可以在单击按钮时更改标签的文本和图标,而不是添加新的。

    【讨论】:

    • 非常感谢!它使用 setText() 处理文本,但我将如何更改图像?
    • @A.J.,看看setIcon()
    猜你喜欢
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多