Проблема с внедрением ресурсов компонента при использовании 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);
}
Я надеюсь, что это поможет вам или кому-то еще с той же проблемой.