首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >静态字段getResource

静态字段getResource
EN

Stack Overflow用户
提问于 2016-10-20 15:28:27
回答 2查看 249关注 0票数 1

所有人。

我是Java的新手,用UI制作培训项目。在培训过程中,我决定从资源中加载图标,并将其加载到不同的类中。有麻烦了。我真的很想自己找到答案,但是not.Code大声说。

主班

代码语言:javascript
复制
package scv.paul;
…
 /**
 * Create the application.
 */
public TestApp() {
    Logger.getLogger(loggerName).fine("Showing main window");
    initialize();       
}

/**
 * Initialize the contents of the frame.
 */
private void initialize() {
    frame = new JFrame();
    frame.setTitle("Test App");
    **frame.setIconImage( MyImages.appIcn.getImage());**//here try to load icon

得到例外:

线程“AWT 0”java.lang.ExceptionInInitializerError中的异常

效用类

代码语言:javascript
复制
package scv.paul;*
import javax.swing.ImageIcon;

public class MyImages { 
public static final ImageIcon appIcn =  new ImageIcon ( MyImages.class.getResource ( "AppIcon.png" ) );
public static final ImageIcon BtnIcn =  new ImageIcon ( MyImages.class.getResource ( "OK.png" ) );
public static final ImageIcon exitIcn =  new ImageIcon ( MyImages.class.getResource ( "door.png" ) ); 
}

图像位于"\bin“文件夹中

我了解到在初始化静态字段时存在的问题。但不能理解原因。

如果我调用这样的静态字段,我就会得到这个错误。

代码语言:javascript
复制
public static final String imgPath = System.getProperties().getProperty("user.dir")+"\\img\\";

但是,如果调用main类(这个静态字段),则没有错误。

代码语言:javascript
复制
    public static final String imgPath = "c://myProjectPath//bin";

我也找不到如何在好的空间里使用资源的方法。我能在哪里读到?

EN

回答 2

Stack Overflow用户

发布于 2016-10-20 15:36:14

不要为这样的事情使用静态变量。没有必要保留对图标的引用。只需阅读图标并将其添加到您的按钮。

只需在类的构造函数中加载图像(当您创建按钮时)。有关更多信息和工作示例,请参阅关于如何使用图标的Swing教程中的部分。

本教程还将向您展示如何更好地构造代码,以便在事件分发线程上创建Swing组件。

保存一个教程的链接,方便其他秋千基础。

票数 1
EN

Stack Overflow用户

发布于 2016-10-20 23:31:48

将图像放在项目目录中,例如bin和src文件夹所在的位置。

最好是使用静态方法来读取文件,以防文件失败。假设您的资源文件夹位于名为resources的目录中,您的代码将如下所示。

代码语言:javascript
复制
public static ImageIcon makeImageIcon(String filename) {
    BufferedImage myPicture = null;
    try {
        myPicture = ImageIO.read(new File("resources/" + filename));
    } catch (IOException e) {
        e.printStackTrace();
    }
    return new ImageIcon(myPicture);
}

然后用您想要的文件名按照上面所做的方式调用它。

代码语言:javascript
复制
public static ImageIcon image= makeImageIcon("myImage.png");

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40158640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档