我有这段代码:
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杯咖啡标志。
有什么不对吗?
谢谢
答案 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
,因为大多数人将此代码放在class
,Frame
或Window
的{{1}}内。所以使用
JFrame