ImageIcon 不可见

Posted

技术标签:

【中文标题】ImageIcon 不可见【英文标题】:ImageIcon not visible 【发布时间】:2016-10-08 18:49:34 【问题描述】:

我正在尝试将ImageIcon 放在JLabel 上,但它没有出现在JFrame 中。我找不到错误的代码,我的控制台也没有显示任何错误。

代码如下:

public class Gui extends JFrame implements ActionListener 

    private JLabel card;
    private JButton bBet;
    private ImageIcon c2 = new ImageIcon("./images/c2.jpg");
    private ImageIcon d2 = new ImageIcon("./images/d2.jpg");
    private ImageIcon h2 = new ImageIcon("./images/h2.jpg");
    private ImageIcon s2 = new ImageIcon("./images/s2.jpg");
    private JPanel panel;
    private int cardx1 = 250, cardy1 = 400;

    public Gui() 

        this.setTitle("Simple Blackjack");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(1200, 800);
        this.setLayout(null);

        panel = new JPanel();
        panel.setBounds(10, 10, 1200, 800);
        panel.setLayout(null);

        bBet = new JButton("Bet");
        bBet.setBounds(10, 70, 200, 35);
        bBet.addActionListener(this);
        panel.add(bBet);

        this.add(panel);
        this.setVisible(true);



public void actionPerformed(ActionEvent event) 

    if (event.getSource() == bBet) 
        random = getRandom();
        addLabel(cardx1, cardy1, random);
    




public void addLabel(int x, int y, int random) 

    Random r = new Random(4);
    int which = r.nextInt();

    card = new JLabel();
    card.setBounds(x, y, 166, 230);

    switch (random) 
    case 0:
        if (which == 0)
            card.setIcon(c2);
         else if (which == 1) 
            card.setIcon(d2);
         else if (which == 2) 
            card.setIcon(h2);
         else if (which == 3) 
            card.setIcon(s2);
        
        break;
    

    panel.add(card);
    panel.repaint();



【问题讨论】:

你在哪里添加了图片图标? 这里:私有 ImageIcon c2 = new ImageIcon("./images/c2.jpg");在这里:card.setIcon(c2); 尝试重新验证您的面板 (panel.revalidate()) 空布局所以重新验证什么都不做 @E.Reu 图像部分仅在 actionperform 发生时才有效。只需为您的 jlable 设置背景颜色,看看它是否可见? card = new JLabel(); card.setOpaque(true); card.setBackground(Color.yellow); 【参考方案1】:

如果您的图像在项目当前工作目录中,只需使用private ImageIcon d2 = new ImageIcon("images/d2.png") 而不使用./ 注意:在您的测试代码中,您假设 getRandom 总是返回 zero ,只是想确定您对此有把握。

【讨论】:

我不敢相信。错误的部分确实是 getRandom 方法 O.o 谢谢你的注意 :)【参考方案2】:

我认为如果图像位置正确,那么下一个问题将是随机数生成。 而不是

    Random r = new Random(4);
    int which = r.nextInt();

使用以下代码生成随机数

ThreadLocalRandom.current().nextInt(0, 4);

【讨论】:

以上是关于ImageIcon 不可见的主要内容,如果未能解决你的问题,请参考以下文章

如何在java中添加一个ImageIcon?此代码不起作用

ImageIcon 在窗口中单击并拖动

Java - JFrame不显示ImageIcon

Java:ImageIcon 与图像差异

使用 ImageIcon 磁贴在 JPanel 上进行主动渲染? #Java

如何在 Swing 上将 ImageIcon 变为灰色