• JAVA学习笔记 -- 包资源文件jar包裹


    初学者GUI,使用Eclipse出口jar包裹,不能显示最小化的图标集(hello.png根文件下的项目文件夹文件)。码如下面:

    import javax.swing.JFrame;
    import java.awt.Toolkit;
    import java.awt.Image;
    import java.net.URL;
    
    public class GUITest {
    	public static void main(String[] args) {
    		JFrame frame = new JFrame();
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		Toolkit kit = Toolkit.getDefaultToolkit();
    		Image image = kit.getImage("hello.png");
    		frame.setIconImage(image);
    		frame.show();
    	}
    }
    

    后来我发现仅仅要把jar包和hello.png在同一文件夹下。图标就能够正常显示。这表示jar是一个单独的文件而非一个文件夹。而上面这代码表示导出的jar文件和hello.png必需要在同样路径下。

    解决方法

    import javax.swing.JFrame;
    import java.awt.Toolkit;
    import java.awt.Image;
    import java.net.URL;
    
    public class GUITest {
    	public static void main(String[] args) {
    		JFrame frame = new JFrame();
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		Toolkit kit = Toolkit.getDefaultToolkit();
    		URL imgURL = GUITest.class.getResource("images/hello.png");
    		Image image = kit.getImage(imgURL);
    		frame.setIconImage(image);
    		frame.show();
    	}
    }
    

    把hello.png的文件夹是 "项目名/bin/images/hello.png" 能够看到images 和class文件是同一文件夹的,所以代码中"images/hello.png"是表示相对路径。当然也能够把images文件夹放在项目的根文件夹下,仅仅要把路径改成"/images/hello.png" 。这样,导出jar包后,在其它位置也能够正常显示图标,由于路径正确了。




    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    在VS中用CLAPACK解决广义特征值问题
    再议:__cdecl与__stdcall 调用约定在动态链接库调用中不同的表现
    类成员析构、虚析构函数、动态生成对象相关的 关于析构顺序的杂谈
    C++ 中dynamic_cast的使用方法
    函数传值 复制构造函数 深度拷贝
    hdoj_1867A + B for you again
    如何判断一个数是否为素数
    hdoj_2087剪花布条
    STL容器之优先队列
    hdoj_4006优先队列的使用
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4850351.html
Copyright © 2020-2023  润新知