2011-12-19 4 views
7

Так что, если у меня есть JMenu & JMenuBar определено, что:Aligning JMenu на правом углу JMenuBar в Java Swing

jMenuBar1 = new javax.swing.JMenuBar(); 
jMenu1 = new javax.swing.JMenu(); 
jMenu1.setText("About"); 
jMenuBar1.add(jMenu1); 

// Finally 
setJMenuBar(jMenuBar1); 

и с этим меню «О» выравнивается по левому большей стороне строка меню. Есть ли в любом случае, что я могу выровнять это меню в правой части панели меню?

ответ

28

Существует патч для этого:

jMenuBar.add(Box.createHorizontalGlue()); 

Добавьте эту строку перед добавлением меню Menubar и ваше меню придет на правой стороне меню. Что-то вроде:

..... 
jMenu1.setText("About"); 
jMenuBar1.add(Box.createHorizontalGlue()); <-- horizontal glue 
jMenuBar1.add(jMenu1); 
..... 
+0

спасибо, что это сработало :) – Johnydep

+0

Правильное предложение +1 – mKorbel

5
jMenuBar1.add(Box.createHorizontalGlue()); 

и не забудьте alignt JMenu с JMenuItem слишком

JMenu.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 
+0

действительно ли это имеет значение? Как без использования ComponentOrienatation он работает отлично? – Johnydep

+0

JMenuItems всегда размещаются внутри контейнеров – mKorbel

+0

-1 для второй части: ComponentOrientation не имеет ничего общего с требованием (если я правильно понимаю OP, у него есть простая проблема с компоновкой ;-) – kleopatra

2

как сказал mKorbel для JMenu он работает на JMenuBar как это:

jMenuBar1.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 
0

Вы можете обратиться к https://docs.oracle.com/javase/tutorial/uiswing/layout/box.html

Особенно обратите внимание на «путем установки горизонтального клея между двумя компонентами в поле слева направо, вы производите дополнительное пространство между этими компонентами».

 Смежные вопросы

  • Нет связанных вопросов^_^