设置JMenu Direction RTL

时间:2013-06-22 09:41:06

标签: java swing right-to-left jmenu

我有一个jMenuBar1jMenu添加了两个jMenu1项(比如jMenu2jMenuBar1)。

我设法将jMenuBar1对象与这行代码对齐:

jMenuBar1.add(Box.createHorizontalGlue());    

现在我试图将jMenu项目中的文本对齐并使文本RTL(从右到左)但似乎没有任何效果。 我已经尝试了

Menu1.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
jMenu1.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);

没有运气。

任何解决方案都将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

您可能需要向我们提供更多信息,或许有些屏幕截图显示您拥有的内容以及您尝试实现的目标,因为menu.setComponentOrientation()似乎对我有用...

我明白了

enter image description here

运行此

import javax.swing.*;
import java.awt.*;

public class MenuTest extends JFrame{

    public static void display()
    {
        JFrame frame = new JFrame();
        frame.setSize(400,400);
        frame.setLayout(new GridLayout(6,1));
        JMenuBar menuBar = new JMenuBar();
        menuBar.applyComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
        JMenu jMenu1 = new JMenu("Menu1");
        jMenu1.setMinimumSize(new Dimension(200, 20));
        jMenu1.setMaximumSize(new Dimension(200, 20));
        jMenu1.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
        JMenu jMenu2 = new JMenu("Menu2");
        jMenu2.setMinimumSize(new Dimension(200, 20));
        jMenu2.setMaximumSize(new Dimension(200, 20));
        JMenuItem menuItem1 = new JMenuItem("Item1");
        JMenuItem menuItem2 = new JMenuItem("Item2");
        menuItem1.setMinimumSize(new Dimension(200, 20));
        menuItem1.setMaximumSize(new Dimension(200, 20));
        menuItem1.setPreferredSize(new Dimension(200, 20));
        menuItem1.setSize(new Dimension(200, 20));
        menuItem2.setMinimumSize(new Dimension(200, 20));
        menuItem2.setMaximumSize(new Dimension(200, 20));
        menuItem1.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
        menuItem2.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
        jMenu1.setHorizontalAlignment(JMenu.TRAILING);
        jMenu1.add(menuItem1);
        jMenu1.add(menuItem2);
        menuBar.add(jMenu1);
        menuBar.add(jMenu2);
        menuBar.setSize(frame.getWidth(), 20);
        frame.add(menuBar);
        frame.setVisible(true);
    }
    public static void main(String[] args)
    {
        EventQueue.invokeLater(
                new Runnable() {
                    @Override
                    public void run() {
                        MenuTest.display();
                    }
                }
         );
    }
}