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