Я работаю над приложением Swing для Solaris, и у меня есть проблема, которая появляется, только когда системная переменная LANG установлена на двухбайтовый язык, такой как корейский. Проблема в том, что размеры компонентов изменяются, и это портит макет приложения:
1) LANG установлен на корейский
2) LANG установлен на английский
Изменение языкового стандарта в самом коде Java не влияет на отображение (если LANG = Английский и Locale установлен на корейский, все в порядке. Если LANG = Корейский и Locale установлен на английский, проблема возникает).
Это вызвано LayoutManager (я использую BorderLayout)? Есть ли способ предотвратить это? Пока что единственный выход, который я могу использовать, - это изменить язык системы на английский прямо перед запуском приложения.
Вот пример кода того, что я делаю:
Box container = Box.createVerticalBox();
container.add(label1);
container.add(label2);
container.add(label3);
container.add(label4);
container.add(label5);
Border border1 = BorderFactory.createEtchedBorder(EtchedBorder.LOWERED);
TitledBorder titledBorder = BorderFactory.createTitledBorder(border1, LocalizationTools.getString("STR_1"));
Dimension lDim = new Dimension(550, 100);
mypanel = new JPanel(new BorderLayout());
mypanel.setPreferredSize(lDim);
mypanel.setMaximumSize(lDim);
mypanel.setMinimumSize(lDim);
mypanel.setBorder(titledBorder);
mypanel.add(container);
Вот некоторые строки, используемые в примере:
1) "\ ud648 \ ub514 \ ub809 \ ud1a0 \ ub9ac"
2) "\ ubcc0 \ uacbd \ uc2dc \ uac04"
3) "\ ub9c8 \ uc9c0 \ ub9c9 \ uc791 \ uc5c5"