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);
            }
        });
    }
}
-------------------------------------

Reply via email to