编程语言
首页 > 编程语言> > 使用Swing应用程序框架进行组件资源注入的问题

使用Swing应用程序框架进行组件资源注入的问题

作者:互联网

我在使用Swing Application Framework的组件资源注入时遇到问题,我阅读了Sun提供的教程,它有点起作用.

这个案例是我有一个类程序,它扩展自de SAF提供的SingleFrameApplication,现在我想从属性文件中获取我的组件(按钮和标签等)的文本,它可以按照预期的那个Program类运行,(我创建了一个名为resources的子目录,并将Program.properties文件放在那里).但是,我在一个名为mainpkg.gui的子包中有一个MainFrame(该程序在mainpkg包中),我创建了相应的资源subsubpackage来放置MainFrame.properties文件,但它不起作用!我无法获得捆绑(自动,我想如果我使用ResourceMap.getXXX()方法我会得到的东西.

我究竟做错了什么?

提前致谢!

解决方法:

我知道这是一个老问题,但这就是我认为的问题:

首先,如果您使用SingleFrameApplication,则不应创建自己的JFrame.相反,你应该有一个这样的startup()方法:

@Override
protected void startup() {
    final FrameView view = getMainView();
    view.setMenuBar(createMenuBar());
    view.setComponent(createMainComponent());
    show(view);
}

现在,show(view)方法负责将所有这些资源注入到组件中.但是,在您调用show()时,它仅处理视图的组件层次结构中的组件.如果稍后添加内容,则必须自己注入资源.这是一个如何做到这一点的例子:

public void injectResources(final Component root) {
    final ResourceMap resourceMap = applicationContext.getResourceMap(root
            .getClass(), Object.class);
    resourceMap.injectComponents(root);
    resourceMap.injectFields(root);
}

我希望这可以帮助你或其他人解决同样的问题.

标签:java,swing,saf
来源: https://codeday.me/bug/20190710/1422540.html