Java / SWT / JFace принудительная перезагрузка графического интерфейса? - PullRequest
2 голосов
/ 07 апреля 2011

У меня есть приложение, которое должно менять свой язык без перезагрузки.Он уже использует Resourcebundles для разных языков, но так как элементы меню и другие GUI-штуки генерируются в течение первых нескольких секунд запуска программы, я не могу больше менять их содержимое в сторону.

Любая идеячто я мог сделать?Или я должен отслеживать все возможные элементы, связанные с графическим интерфейсом?

Ответы [ 2 ]

1 голос
/ 07 апреля 2011

Одним из простых вариантов будет воссоздание пользовательского интерфейса с нуля - без перезапуска приложения.

Например, вы можете скрыть старую оболочку, а затем показать новую с тем же состоянием, но с другим языком.

Если это тоже не принято ... Я размышляю здесь ... возможно, вы могли бы сохранить ключ локализации для каждого виджета с помощью Widget.setData (String, Object), а затем при переключении языков обходить дерево виджетов с помощью Composite. getChildren () - начиная с оболочки - и используйте Widget.getData (String) для получения ключей ресурсов для каждого виджета. Однако с одним виджетом может быть связано несколько локализуемых строк.

0 голосов
/ 07 апреля 2011

Да, вы должны сохранять объекты, которые ссылаются на объекты графического интерфейса, чтобы вы могли обновлять их текст, когда пользователь выбирает новый язык.

...