JAVA Swing GUI Components howto RTL view?

2020-02-07 02:23发布

问题:

How can i make my Java Swing GUI Components [Right To Left] for Arabic language from NetBeans Desktop Application?

回答1:

Don't you just have to use:

Component.setComponentOrientation( ComponentOrientation.RIGHT_TO_LEFT )

I believe that the swing components all already have support for RTL, don't they?

Not sure how/where you'd do that in regards to netbeans, though.



回答2:

The call of

 Component.setComponentOrientation( ComponentOrientation.RIGHT_TO_LEFT )

should do the trick. But be sure to use the SwingConstants LEADING and TRAILING instead of LEFT and RIGHT in your layouts. The same goes for GridBagConstraints.LINE_START or LINE_END instead of WEST or EAST, and probably some similar cases which I forgot to mention.



回答3:

You could use alignment, but that would not handle the complexities if you have English letters or numbers embedded within your text.

It might be preferable to use some sort of styled text widget or even an embedded HTML/rich text viewer.

I don't think that standard JLabels can handle the complexities otherwise.



回答4:

you could use it if you have components inside panels inside 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;

            }
        }
    }