我的GUI出错了.尝试设置标题栏图标,然后将其包含在Runnable JAR中.
BufferedImage image = null;
try {
image = ImageIO.read(getClass().getClassLoader().getResource("resources/icon.gif"));
}
catch (IOException e) {
e.printStackTrace();
}
frame.setIconImage(image);
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
Exception in thread "main" java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(Unknown Source)
at GUI.<init>(GUI.java:39)
at GUI.main(GUI.java:351)
Run Code Online (Sandbox Code Playgroud)
图像位于正确的目录中,"resources"文件夹是项目文件的根目录
我想提前感谢您抽出时间阅读我的问题,我将非常感谢您提供的任何评论,答案,见解,技术和批评.
我正在寻找一种有用的方法来更改Java应用程序的桌面图标.我已经调查了几天,但是没有找到准确的结果.
在您将其标记为重复并将其称为重复之前,我已阅读:如何更改Java中的默认应用程序图标?对其他提出这个问题的人),但这并没有解决我的具体问题.我知道他们的方法使用url位置而不是导入,但我试图学习如何使用导入(如果这样,实际上可能).当我尝试使用他们的方法来改变源位置时.除此之外,url示例似乎不适用于存储在计算机上的文件.当我尝试运行它时,我收到"未捕获的错误"消息.
我使用以下格式声明我已导入NetBeans的图像:
Image image = new ImageIcon("imported.png").getImage();
frame.setIconImage(image);
Run Code Online (Sandbox Code Playgroud)
现在这适用于工具栏中显示的图标,它也出现在框架的左上角,但是当我清理和构建它时,我仍然将Java咖啡杯作为应用程序的图标.
有关我用于尝试此操作的代码的其他资源:
import java.awt.Image;
import javax.swing.*;
public class Check {
JFrame frame;
public static void main(String[] args) {
new Check().go();
}
private void go() {
frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Image image = new ImageIcon("owl.gif").getImage();
frame.setIconImage(image);
frame.setVisible(true);
frame.setSize(300, 300);
}
}
Run Code Online (Sandbox Code Playgroud)
"owl.gif"位是我通过单击和拖动方法导入到NetBeans中的内容(如我在其中一本专注于NetBeans的书籍中所述).
我正在寻找一种方法来创建一个文件,我已经在我的计算机上保存了应用程序的桌面图标.
我试图显示一段时间后内容发生变化的图像.我正在显示它JLabel,但问题是当我重新加载这个图像它没有改变,JLabel因为似乎JLabel#setIcon(new ImageIcon("myImagePath.png"));缓存图像在内存中,当我改变它,它寻找名称,并没有从硬盘加载它.
即使我使用两个图像来翻转其数据内容是否已更改?谁知道如何解决这个问题?但每次加载不同名称的图像都可以正常工作?
创建问题的行: 例如我的图像在按钮单击事件上更改
jlabel.setIcon("d:\\img.png");
jlabel.repaint();
Run Code Online (Sandbox Code Playgroud)