Nli*_*tis 2 java swing jbutton embedded-resource imageicon
我目前正在读一本关于java的书,目前正在研究swing图形用户界面组件。当我这样做时,我偶然发现了一个代码示例,其中作者以一种非常不寻常的方式在 JButton 上设置图像,如下所示:
Icon bug1 = new ImageIcon( getClass().getResource( "bug1.gif" ) );
Run Code Online (Sandbox Code Playgroud)
为了使上述工作正常,您需要将图像与 .class 文件放在同一文件夹中。有人可以向我解释一下为什么他使用这个特定的代码(据我所知,它一定是反射代码,但话又说回来,我对此不是特别确定)以及是否有一种方法可以让我做到这一点同样的事情,而不会让事情像他那样复杂?
只有当你不理解它们时,事情才会变得复杂。一旦你理解了上面代码的作用,它就会变得非常简单。
getClass()返回当前对象 ( ) 的 Class 对象this。getResource()使用上面的相对路径调用,在类路径中查找名为 bug1.gif 且与被调用的 Class 对象位于同一包中的文件。因此它会在与包含上述代码的类相同的包中查找 bug1.gif。getResource()返回一个 URL。构造ImageIcon函数以 URL 作为参数,从该 URL 加载图像字节,并从这些字节构造一个 ImageIcon。
因此,整个过程只是从类路径中可用的文件创建一个 ImageIcon,与调用此代码的类位于同一包中。这是有道理的:您将给定类使用的图像与该类放在同一个包中,然后发布一个包含应用程序的类和图像的 jar。
通过阅读所有这些方法的 javadoc,您可能已经自己弄清楚了这一切。
| 归档时间: |
|
| 查看次数: |
636 次 |
| 最近记录: |