Проблема с внедрением ресурсов компонента при использовании Swing Application Framework - PullRequest
4 голосов
/ 21 мая 2010

У меня проблема с использованием Swing Application Framework Внедрения ресурсов компонентов, я прочитал учебник, предоставленный Sun, и он вроде работает.

Дело в том, что у меня есть класс Program, который расширяется от SingleFrameApplication, предоставленного de SAF, теперь я хочу получить текст своих компонентов (кнопок и меток и т. Д.) из файла свойств, и он работает, как и ожидалось, для этого класса Program (я создал подкаталог с именем resources и поместил туда файл Program.properties). Но у меня есть MainFrame внутри подпакета с именем mainpkg.gui (Program находится в пакете mainpkg), и я создал соответствующий подпакет resources для размещения файла MainFrame.properties, и он не работает ! Я не могу получить пакет (автоматически, я думаю, что если я использую метод ResourceMap.getXXX(), я получу материал.

Что я делаю не так?

Заранее спасибо!

1 Ответ

1 голос
/ 30 августа 2012

Я знаю, что это старый вопрос, но вот что я думаю, это проблема:

Во-первых, если вы используете 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);
}

Надеюсь, это поможет вам или кому-то еще с той же проблемой.

...