Я знаю, что это старая ветка, но я думаю, что у меня может быть решение. Я наткнулся на эту проблему в одном из своих приложений и нашел обходной путь. Попробуйте использовать JMenuItem вместо JMenu. Он будет иметь тот же L & F, что и JMenu, когда вы присоедините его к JMenuBar. Единственное, что вам нужно сделать, это установить размер вашей новой «кнопки», так как ваш менеджер раскладок (даже если вы ее не установили) изменит размер этого компонента на основе его собственных правил:
http://www.javaworld.com/javaworld/jw-09-2000/jw-0922-javatraps.html
Способ сделать это можно найти по этой ссылке (если вы чувствуете себя некомфортно, нажимая на ссылку, Google для «setsize не работает» - это будет в первой десятке результатов). Если вы не установите размер должным образом, ваша новая «кнопка» заполнит оставшееся пространство вашего JMenuBar.
попробуйте этот код:
menuItem.setMinimumSize(someMenu.getSize());
menuItem.setPreferredSize(someMenu.getSize());
menuItem.setMaximumSize(someMenu.getSize());
menuItem.setActionCommand("ActionText");
Метод setActionCommand () установит команду действия, поэтому при нажатии новой «кнопки» это будет команда действия, передаваемая аргументом события действия методу выполненного действия, чтобы вы могли легко определить ее: 1011 *
public void actionPerformed(ActionEvent e) {
System.out.println(e.getActionCommand());
}
Надеюсь, это поможет!