2013-06-22 97 views
1

我有一个jMenuBar1并且有两个jMenu项目(说jMenu1jMenu2)添加到jMenuBar1Set JMenu Direction RTL

我设法对准jMenuBar1对象与此行的代码:

jMenuBar1.add(Box.createHorizontalGlue());  

现在我想对齐JMenu的项目到右侧的文本,使文本RTL(从右到左),但似乎没有上班。 我已经试过

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

并且没有运气。

任何解决方案将不胜感激。

+0

我看不出有什么错在您发布的部分。你能发布更多相关的代码吗? – Maroun

+0

你想要对齐什么以及为什么添加胶水? – kleopatra

+0

'jMenu1.applyComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);' –

回答

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(); 
        } 
       } 
     ); 
    } 
} 
+1

:不要[调整大小提示](http://stackoverflow.com/q/7229226/203657) (aka:setXXSize)并且不做任何手动调整大小(aka:setSize) – kleopatra

+0

相关:猜测(没有IDE方便确认),如果您先添加它们,然后在顶层调用applyCO,则不需要在每个子项上调用setCO父母 – kleopatra

+0

@kleopatra Re:大小,谢谢你的提示,更多的是指出setCO的工作。回复:在添加孩子之后打电话,那也是我的想法,但是当我尝试它时,它似乎并没有传播给孩子。 –