Мне нужно обойти некоторые ограничения компонентов uimenu MATLAB, и поэтому я пытаюсь использовать JPopupMenus / JMenuItems в тандеме с JButtons.Когда я пытаюсь создать элементы подменю, они заполняются над их родителями.
Я пытался использовать некоторые советы из недокументированной MATLAB Яира Алтмана, поскольку он довольно часто использует компоненты java.
contextMenu = javaObjectEDT('javax.swing.JPopupMenu', 'Name');
[jContextMenu, hContextMenu] = javacomponent(contextMenu);
menuItem1 = javaObjectEDT('javax.swing.JMenuItem','Item1');
menuItem2 = javaObjectEDT('javax.swing.JMenuItem', 'Item2');
subMenuItem = javaObjectEDT('javax.swing.JMenuItem', 'Item3');
jContextMenu.add(menuItem1); % I also tried javaMethodEDT('add', jContextMenu, menuItem1)
jContextMenu.add(menuItem2);
menuItem2.add(subMenuItem);
и затем один раз нажав кнопку:
contextMenu.show(jButton, 5, 27);
contextMenu.repaint;
Создается контекстное меню, и отображается, где я бы хотел, но подменю опускается прямо над его родителем (это на самом деле выглядит как внутри).Когда вы пытаетесь навести на него курсор, вам нужно переместить курсор вправо по краю, чтобы остаться на родительском элементе, потому что он теряет фокус, если вы перебираете элемент подменю.
Есть идеи, что происходит?
РЕДАКТИРОВАТЬ: выяснил, где я ошибался - подменю должно быть связано с JMenu, поэтому окончательная структура должна быть JPopupMenu с JMenuItems и JMenus (которые далее заполняются JMenuItems / JMenus).