【问题标题】:Icon in a JLabelJLabel 中的图标
【发布时间】:2014-01-08 00:57:24
【问题描述】:

我使用了以下代码:

JLabel jLabel = new JLabel(new ImageIcon(someImage));

我不明白.. 有时在我运行代码时会出现图像,有时不会.. 我并不总是得到相同的输出。任何人都可以解释为什么会发生这种情况?!

【问题讨论】:

  • 展示你如何构建你的 gui。你是如何得到你的图像的?
  • jLabel.setIcon(new ImageIcon(someImage));
  • 代码看起来没问题,你应该检查someImage。它是什么(图像、字符串、字节、...)以及如何获得它?
  • 有没有可能,您将框架设置得太早了?
  • @Samy 是对的。检查someImage。它应该是图像的路径。

标签: java swing jlabel imageicon


【解决方案1】:

如果没有更多的上下文代码,很难确定,但每当我听到有时有效的 Swing 问题时,我倾向于怀疑线程问题;例如,如果您的 GUI 是一个未在 Event Dispatch Thread 上构建的对话框,那么这种随机性很常见。如果您不确定您的线程,请将其放在执行此代码的方法的顶部:

System.out.println(String.format("This code %s running on the Event Dispatch Thread.", (javax.swing.SwingUtilities.isEventDispatchThread() ? "IS" : "IS NOT"));

看看你会得到什么。

【讨论】:

    【解决方案2】:

    这是JLabelIcon 的简单示例,请检查:

    import java.net.URL;
    
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    
    public class Example extends JFrame {
    
        public Example() {
            URL resource = getClass().getResource("image.png");
            ImageIcon icon = new ImageIcon(resource);
            JLabel l = new JLabel(icon);
            add(l);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            pack();
            setLocationRelativeTo(null);
            setVisible(true);
        }
    
        public static void main(String... s){
            new Example();
        }
    
    }
    

    image.png 是我的图片,与班级放在同一文件夹中。

    【讨论】:

      猜你喜欢
      • 2012-12-04
      • 1970-01-01
      • 1970-01-01
      • 2011-12-16
      • 1970-01-01
      • 2013-07-03
      • 1970-01-01
      • 1970-01-01
      • 2011-02-25
      相关资源
      最近更新 更多