Componenti Java GUI swing HowTo vista RTL?
-
21-08-2019 - |
Domanda
Come posso fare il mio Java Swing componenti GUI [destra a sinistra] per la lingua araba da NetBeans applicazioni desktop?
Soluzione
Non basta usare:
Component.setComponentOrientation( ComponentOrientation.RIGHT_TO_LEFT )
Credo che i componenti Swing tutti già hanno il supporto per RTL, non è vero?
Non sai come / dove si farebbe che per quanto riguarda NetBeans, però.
Altri suggerimenti
Il richiamo della
Component.setComponentOrientation( ComponentOrientation.RIGHT_TO_LEFT )
dovrebbe fare il trucco. Ma essere sicuri di utilizzare i SwingConstants anteriore e posteriore invece che a sinistra e a destra nel vostro layout. Lo stesso vale per GridBagConstraints.LINE_START o LINE_END anziché a ovest oa est, e probabilmente alcuni casi simili che ho dimenticato di menzionare.
Si potrebbe usare l'allineamento, ma che non sarebbe gestire le complessità se si dispone di lettere inglesi o numeri incorporati all'interno del testo.
Potrebbe essere preferibile utilizzare una sorta di widget di testo formattato o anche un ricco visualizzatore HTML / testo incorporato.
Non credo che JLabels standard, in grado di gestire le complessità altrimenti.
si potrebbe usare se si dispone di componenti all'interno pannelli interni 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;
}
}
}