Проблема с внедрением ресурсов компонента при использовании Swing Application Framework

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

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

Что я делаю неправильно?

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

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);
}

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

Другие вопросы по тегам