1

我有这个代码:

 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 杯咖啡标志。

有什么问题吗?

谢谢

4

2 回答 2

2

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

如果您相当有信心正确读取图像(一个很好的测试是在窗口内制作一个虚拟组件并查看是否可以将图像加载到其中),您应该查看框架/顶层窗口教程,尤其是关于窗户装饰的部分。特别是,您可能没有做的一件事(我无法从您的代码片段中看出)是您可能需要JFrame.setDefaultLookAndFeelDecorated(true);在创建框架之前进行设置......您将无法使用this.getFrame(),但需要在你的初始化代码中更早的地方做。

于 2011-09-25T18:52:49.143 回答
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,它可以是任何数字。至于您的错误“没有这样的构造函数”,它告诉您需要将 a 传递Component给构造函数。您的应用程序窗口是一个组件,因此您应该在此处将其作为参数传递。我之所以使用,this是因为大多数人将此代码放在class扩展Frame或. 所以使用WindowJFrame

MediaTracker mt=new MediaTracker(this.getFrame());
于 2011-09-25T19:20:50.217 回答