我正在与一个小团队一起进行游戏,他们已经打开了一张票以更改IconImage,它带有ImageIcon对象。
我创建一个ImageIcon对象,该对象的java.net.URL指向CLASSPATH中的文件位置。然后,我根据ImageIcon.getImage()创建一个Image对象。
稍后在程序中,我将上述Image对象传递给jframe.setIconImage();
如果我在调试中运行程序,则可以看到图像的路径正确,反映出它在CLASSPATH中的位置,但是图标没有变化。如果我进入jframe.setIconImage(),则会到达JFrame.java调用JFrame.super.setIconImage()的地步,但是传递给超类的图像的值为“”(空字符串)。>
我在主类中有代码,src文件夹结构,out / bin文件夹结构以及作为空字符串传递的值的图片。
非常感谢任何建议,并感谢您的宝贵时间。
==代码==
package orsc;
import orsc.Config;
import javax.swing.*;
import java.applet.Applet;
import java.awt.*;
import java.io.File;
public class ORSCFrame extends ORSCApplet {
private static final long serialVersionUID = 1L;
public String getCacheLocation() {
return Config.F_CACHE_DIR + File.separator;
}
public static void main(String[] args) {
JFrame jframe = new JFrame(Config.SERVER_NAME);
ImageIcon orscIcon = new ImageIcon(ORSCFrame.class.getResource("icon.png"));
Image orscIconImage = orscIcon.getImage();
final Applet applet = new ORSCFrame();
applet.setPreferredSize(new Dimension(512, 334 + 12));
jframe.getContentPane().setLayout(new BorderLayout());
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jframe.getContentPane().add(applet);
jframe.setResizable(true);
jframe.setVisible(true);
// jframe.setAlwaysOnTop(true);
jframe.setBackground(Color.black);
jframe.setMinimumSize(new Dimension(512, 334 + 12));
jframe.setIconImage(orscIconImage);
jframe.pack();
jframe.setLocationRelativeTo(null);
applet.init();
applet.start();
// jframe.add(applet);
}
@Override
public void playSound(byte[] soundData, int offset, int dataLength) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void stopSoundPlayer() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}
== src文件夹==
== out / bin文件夹==
==进入第33行(jframe.setIconImage(orscIconImage);)==
== jframe的图片==