图标图标未显示在左上方的窗口中

时间:2011-09-25 18:28:22

标签: java swing imageicon

我有这段代码:

 public DesktopApplication1View(SingleFrameApplication app)
    {
        super(app);
        pbu.registriere(this);

        ImageIcon icon = new ImageIcon("resources/BilKa_Icon_32.png");
        this.getFrame().setIconImage(icon.getImage());

        initComponents();

我想知道为什么图片图标没有显示在应用程序窗口的左上角。它仍然是Java杯咖啡标志。

有什么不对吗?

谢谢

2 个答案:

答案 0 :(得分:2)

一种可能的可能是您的资源路径可能不正确。根据您的文件层次结构以及您的类文件是否在jar等中,您可能需要在res之前的路径的开头使用“/”来使路径成为绝对路径而不是相对路径。教程:http://download.oracle.com/javase/1.5.0/docs/guide/lang/resources.html

如果你相当自信你正在正确地阅读图像(一个很好的测试是在你的窗口内制作一个虚拟组件,看看你是否可以将图像加载到那里),你应该通过{{3 ,尤其是关于窗口装饰的部分。特别是,你可能没有做过的一件事(我从你的代码片段中无法分辨)是你可能需要在创建框架之前设置JFrame.setDefaultLookAndFeelDecorated(true); ...这是你无法做到的使用this.getFrame(),但需要在初始化代码中提前做某事。

答案 1 :(得分:2)

Mike K是对的,ImageIcons可以动态加载,并且图像在首次初始化时可以具有零大小。另请注意,在Unix和JAR中,名称区分大小写。

试试这个:

 try{
   ImageIcon icon = new ImageIcon("resources/BilKa_Icon_32.png");
   MediaTracker mt=new MediaTracker(this);
   mt.addImage(icon.getImage(),0);
   mt.waitForAll();
   this.getFrame().setIconImage(icon.getImage());
 }catch(InterruptedException excp){}

-

好的道歉我编辑了addImage - 它需要一个额外的参数ID,可以是任何数字。 至于你的错误“没有这样的构造函数”,它告诉你需要将Component传递给构造函数。您的应用程序窗口是一个组件,因此您应将此处作为参数传递。我使用this,因为大多数人将此代码放在classFrameWindow的{​​{1}}内。所以使用

JFrame