Java Swing GUI-Komponenten howto RTL Ansicht?
-
21-08-2019 - |
Frage
Wie kann ich meine Java Swing GUI-Komponenten mache [Von rechts nach links] für arabische Sprache von NetBeans Desktop-Anwendung?
Lösung
Haben Sie nicht nur verwenden:
Component.setComponentOrientation( ComponentOrientation.RIGHT_TO_LEFT )
Ich glaube, dass die Swing-Komponenten alle bereits Unterstützung für RTL haben, nicht wahr?
Nicht sicher, wie / wo Sie, dass in Bezug auf Netbeans tun würde, wenn.
Andere Tipps
Der Aufruf von
Component.setComponentOrientation( ComponentOrientation.RIGHT_TO_LEFT )
sollte es tun. Aber sicher sein, die SwingConstants zu verwenden, Vorder- und Hinter statt links und rechts in Ihrem Layout. Das gleiche gilt für GridBagConstraints.LINE_START oder ZEILE ENDE statt Westen oder Osten, und wahrscheinlich einige ähnliche Fälle, die ich vergessen zu erwähnen.
Sie könnten Ausrichtung verwenden, aber das würde die Komplexität nicht umgehen, wenn Sie englische Buchstaben oder Zahlen in Ihrem Text eingebettet haben.
Es könnte vorteilhaft sein, eine Art von formatierten Text-Widget zu verwenden oder sogar ein eingebetteten HTML / Rich-Text-Viewer.
Ich glaube nicht, dass Standard JLabels sonst die Komplexität umgehen kann.
Sie können es verwenden, wenn Sie Komponenten im Inneren Platten innerhalb contentPane haben
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;
}
}
}