Come posso rendere i componenti della GUI Java Swing [da destra a sinistra] per la lingua araba dall'applicazione desktop NetBeans?Componenti GUI Swing JAVA howto vista RTL?
risposta
Non ti basta utilizzare:
Component.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT)
credo che i componenti Swing tutti già hanno il supporto per RTL, non è vero?
Non so come/dove lo fareste per quanto riguarda i netbeans, però.
C'è anche Component.applyComponentOrientation (..) per cambiare un intero albero dei componenti. –
È possibile utilizzare l'allineamento, ma questo non gestirà le complessità se si dispone di lettere o numeri inglesi incorporati nel testo.
Potrebbe essere preferibile utilizzare una sorta di widget di testo in stile o persino un visualizzatore di testo RTF/HTML incorporato.
Non penso che JLabels standard possa gestire le complessità altrimenti.
JLabel visualizza lettere unicode. Penso che si inoltrino sui font di sistema e se i font di sistema possono visualizzare la lettera, allora tutto è ok. Per esempio nel mio comp posso scrivere "Extraño" – OscarRyz
Il richiamo della
Component.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT)
dovrebbe fare il trucco. Ma assicurati di utilizzare i tasti di direzione e rotta di SwingConstant anziché LEFT e RIGHT nei tuoi layout. Lo stesso vale per GridBagConstraints.LINE_START o LINE_END anziché WEST o EAST, e probabilmente per alcuni casi simili che ho dimenticato di menzionare.
Questa è un'ottima risposta, le informazioni sull'uso delle costanti di allineamento più significative potrebbero non essere un dato ad altri che hanno problemi con questo. –
si potrebbe usare se si dispone di componenti all'interno di quadri all'interno 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;
}
}
}
Do yo dire, come per visualizzare il testo, in un JLabel per esempio? – OscarRyz