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

4

我在使用Swing应用程序框架的组件资源注入时遇到了问题,我阅读了Sun提供的教程,它有点起作用。

我有一个类叫做Program,它继承了由SAF提供的SingleFrameApplication。现在我想从属性文件中获取我的组件(按钮和标签等)的文本,并且对于那个Program类来说,这些工作都符合预期(我创建了一个名为resources的子目录,将Program.properties文件放在其中)。但是,我有一个MainFrame位于名为mainpkg.gui的子包中(Programmainpkg包中),并创建了相应的resources子子包以放置MainFrame.properties文件,但是它无法正常工作!我无法获取捆绑包(自动地,我猜如果我使用ResourceMap.getXXX()方法,我就可以得到这些材料)。

我做错了什么?

提前致谢!


你的 MainFrame 是 SingleFrameApplication 的子类吗?还是直接继承自 JFrame - Riduidel
你的MainFrame是否采用动态实现?你可以动态注入资源:Application.getInstance().getContext().getResourceMap().injectComponent(this); - Joshua
1个回答

1

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

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

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

现在,show(view)方法负责将所有这些资源注入到组件中。但它只处理在调用show()时位于view组件层次结构中的组件。如果您稍后添加了一些内容,则必须自己注入资源。以下是如何执行此操作的示例:

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接