Компоненты JAVA Swing GUI, как просматривать RTL?
-
21-08-2019 - |
Вопрос
Как я могу создать компоненты графического пользовательского интерфейса Java Swing [справа налево] для арабского языка из настольного приложения NetBeans?
Решение
Разве вам не нужно просто использовать:
Component.setComponentOrientation( ComponentOrientation.RIGHT_TO_LEFT )
Я считаю, что все компоненты Swing уже поддерживают RTL, не так ли?
Однако не уверен, как и где вы это сделаете в отношении NetBeans.
Другие советы
Вызов
Component.setComponentOrientation( ComponentOrientation.RIGHT_TO_LEFT )
должен сделать свое дело.Но обязательно используйте SwingConstants LEADING и TRAILING вместо LEFT и RIGHT в своих макетах.То же самое касается GridBagConstraints.LINE_START или LINE_END вместо WEST или EAST и, возможно, некоторых подобных случаев, о которых я забыл упомянуть.
Вы можете использовать выравнивание, но это не решит сложностей, если в тексте есть английские буквы или цифры.
Возможно, предпочтительнее использовать какой-нибудь стилизованный текстовый виджет или даже встроенную программу просмотра HTML/форматированного текста.
Я не думаю, что стандартные JLabels иначе справятся с такими сложностями.
вы можете использовать его, если у вас есть компоненты внутри панелей внутри contentPane
Component[] component = contentPane.getComponents();
for(int i=0; i<component.length; i++){
component[i].applyComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
Component[] cp = ((Container) component[i]).getComponents();
for(int j=0; j<cp.length; j++){
try{
((Component) ((JComboBox) cp[j]).getRenderer()).applyComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
}catch(Exception e){
continue;
}
}
}