4

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

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

我究竟做错了什么?

提前致谢!

4

1 回答 1

1

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

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

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

现在,该show(view)方法负责将所有这些资源注入到组件中。但它只处理view您调用的那一刻的组件层次结构中的组件show()。如果你稍后添加一些东西,你将不得不自己注入资源。这是一个如何做到这一点的示例:

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

我希望这可以帮助您或遇到同样问题的其他人。

于 2012-08-30T06:44:07.163 回答