ImageIcon没有显示出来

时间:2014-11-07 18:51:37

标签: java swing loops random imageicon

我有一个程序代表不同年龄组人口统计的8个不同广告。我的程序是打印出某个人口统计信息,具体取决于我的for循环中随机数量最多的人。在我的输出中,它总是显示为"老年人#34;并且甚至没有返回图片。

问题:我的循环是否正确地将数字递增到每个组?为什么我的ImageIcons不会出现?

编辑:此代码以下是ADVERTISEMENT

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

import javax.swing.*;

public class AdPanel extends JPanel {

    int THIRTEEN_18 = 0;
    int EIGHTEEN_24 = 0;
    int TWENTYFOUR_33 = 0;
    int THIRTYTHREE_42 = 0;
    int FORTYTWO_58 = 0;
    int FIFTYEIGHT_75 = 0;
    int SEVENTYFIVE_84 = 0;
    int EIGHTYFOUR_90 = 0;

    JLabel Ad1Description;
    JLabel Ad2Description;
    JLabel Ad3Description;
    JLabel Ad4Description;
    JLabel Ad5Description;
    JLabel Ad6Description;
    JLabel Ad7Description;
    JLabel Ad8Description;

    JLabel Ad1Pic;
    JLabel Ad2Pic;
    JLabel Ad3Pic;
    JLabel Ad4Pic;
    JLabel Ad5Pic;
    JLabel Ad6Pic;
    JLabel Ad7Pic;
    JLabel Ad8Pic;

    JButton AdButton = new JButton("What's your target demographic?");


    Advertisement Ad1 = new Advertisement("13-18", "Teenagers and young adults", new ImageIcon("/.src/13-18.jpg")); 
    Advertisement Ad2 = new Advertisement("18-24", "College students", new ImageIcon("/.src/18-24.jpg"));
    Advertisement Ad3 = new Advertisement("24-33", "College graduates", new ImageIcon("/.src/24-33.jpg"));
    Advertisement Ad4 = new Advertisement("33-42", "People starting to have mid-life crises", new ImageIcon("/.src/33-42.jpg"));
    Advertisement Ad5 = new Advertisement("42-58", "People starting to become old", new ImageIcon("/.src/42-58.jpg"));
    Advertisement Ad6 = new Advertisement("58-75", "People who are old", new ImageIcon("/.src/58-75.jpg"));
    Advertisement Ad7 = new Advertisement("75-84", "People who are REALLY old", new ImageIcon("/.src/75-84.jpg"));
    Advertisement Ad8 = new Advertisement("84-90", "Teenagers and young adults", new ImageIcon("/.src/84-90.jpg"));

    public AdPanel()
    {
        //components to panel
        Dimension myDimension = new Dimension(1000,500);
        setPreferredSize(myDimension);
        setBackground(Color.cyan);

        //descriptions of each ad
        Ad1Description = new JLabel(Ad1.getDescription());
        Ad2Description = new JLabel(Ad2.getDescription());
        Ad3Description = new JLabel(Ad3.getDescription());
        Ad4Description = new JLabel(Ad4.getDescription());
        Ad5Description = new JLabel(Ad5.getDescription());
        Ad6Description = new JLabel(Ad6.getDescription());
        Ad7Description = new JLabel(Ad7.getDescription());
        Ad8Description = new JLabel(Ad8.getDescription());

        //pictures for each ad
        Ad1Pic = new JLabel(Ad1.getFilePath());
        Ad2Pic = new JLabel(Ad2.getFilePath());
        Ad3Pic = new JLabel(Ad3.getFilePath());
        Ad4Pic = new JLabel(Ad4.getFilePath());
        Ad5Pic = new JLabel(Ad5.getFilePath());
        Ad6Pic = new JLabel(Ad6.getFilePath());
        Ad7Pic = new JLabel(Ad7.getFilePath());
        Ad8Pic = new JLabel(Ad8.getFilePath());

        for (int i = 0; i < 1000; i++)
        {

            Random random = new Random();
            int rand = random.nextInt(78) + 13;

        if (rand > 13 && rand < 18)
        {
            THIRTEEN_18++;
        }

        else if (rand > 18 && rand < 24)
        {
            EIGHTEEN_24++;
        }
        else if (rand > 24 && rand < 33)
        {
            TWENTYFOUR_33++;
        }
        else if (rand > 33 && rand < 42)
        {
            THIRTYTHREE_42++;
        }
        else if (rand > 58 && rand < 75)
        {
            FIFTYEIGHT_75++;
        }
        else if (rand > 75 && rand < 84)
        {
            SEVENTYFIVE_84++;
        }
        else if (rand > 84 && rand <= 90)
        {
            EIGHTYFOUR_90++;
        }

        }


        //for Ad1
        add(Ad1Description);
        add(Ad1Pic);
        Ad1Description.setVisible(false);
        Ad1Pic.setVisible(false);

        //for Ad2
        add(Ad2Description);
        add(Ad2Pic);
        Ad2Description.setVisible(false);
        Ad2Pic.setVisible(false);

        //for Ad3
        add(Ad3Description);
        add(Ad3Pic);
        Ad3Description.setVisible(false);
        Ad3Pic.setVisible(false);

        //for Ad4
        add(Ad4Description);
        add(Ad4Pic);
        Ad4Description.setVisible(false);
        Ad4Pic.setVisible(false);

        //for Ad5
        add(Ad5Description);
        add(Ad5Pic);
        Ad5Description.setVisible(false);
        Ad5Pic.setVisible(false);

        //for Ad6
        add(Ad6Description);
        add(Ad6Pic);
        Ad6Description.setVisible(false);
        Ad6Pic.setVisible(false);

        //for Ad7
        add(Ad7Description);
        add(Ad7Pic);
        Ad7Description.setVisible(false);
        Ad7Pic.setVisible(false);

        //for Ad8
        add(Ad8Description);
        add(Ad8Pic);
        Ad8Description.setVisible(false);
        Ad8Pic.setVisible(false);

        //for AdButton
        add(AdButton);
        AdButton.addActionListener(new buttonListener());

    }   
        private class buttonListener implements ActionListener

        {
            @Override
            public void actionPerformed(ActionEvent e) {

        int highestViewers = Math.max(THIRTEEN_18, Math.max(EIGHTEEN_24, Math.max(TWENTYFOUR_33, Math.max(THIRTYTHREE_42, Math.max(FORTYTWO_58, Math.max(FIFTYEIGHT_75, Math.max(SEVENTYFIVE_84, Math.max(EIGHTYFOUR_90, 0))))))));

        if(THIRTEEN_18 >= highestViewers)
        {
            Ad1Pic.setVisible(true);
            Ad1Description.setVisible(true);
        }

        else if (EIGHTEEN_24 >= highestViewers)
        {
            Ad2Pic.setVisible(true);
            Ad2Description.setVisible(true);
        }
        else if (TWENTYFOUR_33 >= highestViewers)
        {
            Ad3Pic.setVisible(true);
            Ad3Description.setVisible(true);
        }

        else if (THIRTYTHREE_42 >= highestViewers)
        {
            Ad4Pic.setVisible(true);
            Ad4Description.setVisible(true);
        }

        else if (FORTYTWO_58 >= highestViewers)
        {
            Ad5Pic.setVisible(true);
            Ad4Description.setVisible(true);
        }
        else if (FIFTYEIGHT_75 >= highestViewers)
        {
            Ad6Pic.setVisible(true);
            Ad6Description.setVisible(true);
        }
        else if (SEVENTYFIVE_84 >= highestViewers)
        {
            Ad7Pic.setVisible(true);
            Ad7Description.setVisible(true);
        }
        else if (EIGHTYFOUR_90 >= highestViewers)
        {
            Ad8Pic.setVisible(true);
            Ad8Description.setVisible(true);
        }

            }
        }


    }



import java.util.Random;

import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.Spring;


public class Advertisement {


    private String title;
    private String description;
    private ImageIcon picture;


    public Advertisement(String title, String description, ImageIcon FilePath)
    {
        this.title = title;
        this.description = description;
        this.picture = FilePath;
    }

    public String title()
    {
        return title;
    }

    public String getDescription()
    {
        return description;

    }

    public ImageIcon getFilePath()
    {
        return picture;
    }
}

1 个答案:

答案 0 :(得分:0)

您的问题的答案:为什么我的ImageIcons不会出现?

图片的路径可能有误。您可以查看ImageIcon文档here

如果您要从类路径加载图片,可以使用ClassLoader加载图片。

  

new ImageIcon(AdPanel.class.getResource(&#34; /src/84-90.jpg")。getFile())

如果要从文件系统加载图像,则图像的路径必须为absolute path