2008-12-10 11 views

Antwort

8

Sie nicht müssen Sie 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/was Sie in Bezug auf Netbeans tun würde, obwohl.

+2

Es gibt auch Component.applyComponentOrientation (..), um eine ganze Komponentenstruktur zu ändern. –

1

Sie könnten Ausrichtung verwenden, aber das würde nicht mit den Komplexitäten umgehen, wenn Sie englische Buchstaben oder Zahlen in Ihren Text eingebettet haben.

Es könnte besser sein, eine Art von formatiertem Text-Widget oder sogar einen eingebetteten HTML/Rich-Text-Viewer zu verwenden.

Ich glaube nicht, dass Standard JLabels die Komplexität sonst behandeln können.

+0

JLabel Anzeige Unicode-Buchstaben. Ich denke, dass sie sich auf die Systemschriftarten beziehen und wenn die Systemschriftarten den Buchstaben anzeigen können, dann ist alles in Ordnung. Zum Beispiel in meiner Comp kann ich schreiben "Extraño" – OscarRyz

5

Der Aufruf von

Component.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT) 

sollte es tun. Aber achten Sie darauf, dass Sie die SwingConstants LEADING und TRAILING anstelle von LINKS und RECHTS in Ihren Layouts verwenden. Dasselbe gilt für GridBagConstraints.LINE_START oder LINE_END anstelle von WEST oder EAST und wahrscheinlich einige ähnliche Fälle, die ich vergessen habe zu erwähnen.

+0

Das ist eine großartige Antwort, die Information über die Verwendung der aussagekräftigeren Ausrichtungskonstanten ist für andere, die damit Probleme haben, nicht gegeben. –

0

Sie es verwenden können, 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; 

      } 
     } 
    }