Java 在导出jar时,如何设置jframe的图标而不必将图标放在桌面上?
我想将java游戏的图标设置为一个名为lgico.png的图标,但当我使用:Java 在导出jar时,如何设置jframe的图标而不必将图标放在桌面上?,java,swing,jframe,embedded-resource,imageicon,Java,Swing,Jframe,Embedded Resource,Imageicon,我想将java游戏的图标设置为一个名为lgico.png的图标,但当我使用: staticimageicon-icon=newimageicon(“lgico.png”); 公共窗口(整数宽度、整数高度、字符串标题、游戏){ frame.setIconImage(icon.getImage()); } 当我创建jar文件并将其放在桌面上时,它没有图标 以下是我的window课程的全部内容: package com.teto.main; 导入java.awt.Canvas; 导入java.awt
staticimageicon-icon=newimageicon(“lgico.png”);
公共窗口(整数宽度、整数高度、字符串标题、游戏){
frame.setIconImage(icon.getImage());
}
当我创建jar文件并将其放在桌面上时,它没有图标
以下是我的window课程的全部内容:
package com.teto.main;
导入java.awt.Canvas;
导入java.awt.Cursor;
导入java.awt.Dimension;
导入javax.swing.ImageIcon;
导入javax.swing.JFrame;
公共类窗口扩展画布{
私有静态最终长serialVersionUID=5486926782194361510L;
静态图像图标=新图像图标(“lgico.png”);
光标csr=新光标(光标.十字线\光标);
公共窗口(整数宽度、整数高度、字符串标题、游戏){
JFrame=新JFrame(标题);
frame.setPreferredSize(新尺寸(宽度、高度));
框架。设置最大尺寸(新尺寸(宽度、高度));
框架。设置最小尺寸(新尺寸(宽度、高度));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setresizeable(false);
frame.setLocationRelativeTo(空);
frame.add(游戏);
frame.setVisible(true);
frame.setIconImage(icon.getImage());
frame.setCursor(csr);
game.start();
}
}
我曾多次尝试在这个网站上寻找解决方案,但都遇到了NullPointerException,而我的程序是一个没有任何内容的白色屏幕
我很抱歉,如果我试图表达的不是很清楚,因为我的母语不是英语
import javax.swing.*;
import java.net.*;
class FrameIconFromMain
{
public static void main(String[] args)
{
Runnable r = new Runnable()
{
public void run()
{
JFrame f = new JFrame("Frame with icon");
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
String imageName = "dukewavered.gif";
URL imageUrl = f.getClass().getResource(imageName);
if (imageUrl == null)
{
System.out.println("imageUrl not found using default classloader!");
imageUrl = Thread.currentThread().getContextClassLoader().getResource(imageName);
}
ImageIcon icon = new ImageIcon( imageUrl );
f.setIconImage( icon.getImage() );
f.setSize(400,300);
f.setLocationRelativeTo( null );
f.setVisible( true );
}
};
SwingUtilities.invokeLater(r);
}
}
应用程序资源在部署时将成为嵌入式资源,因此现在就开始访问它们是明智的。必须通过URL而不是文件访问。有关如何形成URL的信息,请参阅。我遇到了这个错误:
线程“main”java.lang.NullPointerException中的异常位于javax.swing.ImageIcon。(未知源代码)位于com.teto.main.FrameInGame。(FrameInGame.java:27)位于com.teto.main.Game。(Game.java:25)位于com.teto.main.Game.main(Game.java:209)
我可能只是在目录中键入了错误的内容,或者是idkok的某个东西,我已经修复了它,但现在我在控制台中得到了“imageUrl未使用默认类加载器找到!”字符串,我不完全确定这到底意味着什么(我是java新手)nvm我让它工作了,你不知道你刚才让我有多高兴,我一整天都在努力使这项工作顺利进行