2015-09-28 7 views
1

Когда я создаю меню в Java GUI с помощью JMenuBar он помещает все JMenu с от левого направо направления, как это:Как изменить направление JMenus в JMenuBar

enter image description here

I хочу изменить его правое налево, как это:

enter image description here

Я хочу сделать это в английской ОС, поэтому предложения по арабскому или правому к левому решению не то, что я находясь в поиске.

ответ

5

Вы можете использовать Component.applyComponentOrientation изменить ориентацию JMenuBar:

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

public class R_L_MenuBar_Demo 
{ 
    public static void main(String[] args){ 
     SwingUtilities.invokeLater(() -> createAndShowGUI());  
    } 

    private static void createAndShowGUI() 
    { 
     JMenuBar mb = new JMenuBar(); 

     JMenuItem item_1 = new JMenuItem("First Item"); 
     JMenu menu_2 = new JMenu("Second Menu"); 
     JMenuItem item_3 = new JMenuItem("First Item in Second"); 

     menu_2.add(item_3); 
     mb.add(item_1); 
     mb.add(menu_2); 

     //switch the orientation of the menubar to right to left 
     JButton btn_r_to_l = new JButton("Switch menubar to r_to_l"); 
     btn_r_to_l.addActionListener(e -> { 
      mb.invalidate(); 
      mb.applyComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 
      mb.validate(); 
     }); 

     //switch the orientation of the menubar to left to right 
     JButton btn_l_to_r = new JButton("Switch menubar to l_to_r"); 
      btn_l_to_r.addActionListener(e -> { 
      mb.invalidate(); 
      mb.applyComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT); 
      mb.validate(); 
     }); 

     JFrame frame = new JFrame("R_L_MenuBar"); 
     frame.setLayout(new FlowLayout()); 
     frame.add(btn_r_to_l); 
     frame.add(btn_l_to_r); 
     frame.setJMenuBar(mb); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(200 , 200); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
    } 
} 

Это будет выглядеть следующим образом:
Значения по умолчанию внешнего вида (слева направо)
The default left-to-right orientation

И после переключения справа налево:
After switching to right-to-left orientation