<Swing Dev> Setting a component orientation in JRSUI

Alexander Scherbatiy alexandr.scherbatiy at oracle.com
Wed Jan 22 15:23:00 UTC 2014


  Hello,

  Below is the code that shows that setting a component orientation for 
the JProgressBar in Aqua L&F does not work.

   My assumption was that the Direction should be properly set to the 
painter state in the AquaProgressBarUI like:
   -----------------------------
     public void paint(final Graphics g, final JComponent c) {
        ...
        painter.state.set(c.getComponentOrientation().isLeftToRight() ? 
Direction.RIGHT : Direction.LEFT);
     }
   -----------------------------
but it does not work.

  The painter calls the JRSUI library to show components on Mac OS X.

  Is there any specification for the JRSUI library?
  What is the right way to set the component direction in the JRSUI.

  Thanks,
  Alexandr.


  ------------------  Code Sample  ----------
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class JProgressBarOrientationTest {

     static boolean leftToRight = true;

     public static void main(String[] args) throws Exception {

         SwingUtilities.invokeLater(new Runnable() {

             @Override
             public void run() {
                 JFrame frame = new JFrame();
                 frame.setSize(300, 200);

                 final JProgressBar progressBar = new JProgressBar(0, 100);
                 progressBar.setValue(30);
progressBar.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);

                 JButton button = new JButton("Change orientation");
                 button.addActionListener(new ActionListener() {

                     @Override
                     public void actionPerformed(ActionEvent e) {
                         leftToRight = !leftToRight;
progressBar.setComponentOrientation(leftToRight ? 
ComponentOrientation.LEFT_TO_RIGHT : ComponentOrientation.RIGHT_TO_LEFT);
                     }
                 });

                 JPanel panel = new JPanel(new BorderLayout());
                 panel.add(progressBar, BorderLayout.CENTER);
                 panel.add(button, BorderLayout.SOUTH);
                 frame.getContentPane().add(panel);
                 frame.setVisible(true);
             }
         });
     }
}
-------------------------------------



More information about the swing-dev mailing list