Java: Показать JPopupMenu без передачи компонента invoker - PullRequest
1 голос
/ 04 октября 2010

Когда я разрешаю открывать JPopupMenu, не пропуская «компонент invoker», меню не работает: подменю не открываются и не перерисовываются.Но когда я создаю совершенно бесполезный JFrame с JLabel внутри, и я передаю JLabal как invoker, он работает правильно ...

Любые предложения, как избежать создания бесполезного фрейма.И в моем приложении действительно нет открытых рамок, просто нужно открыть простое меню.

JPopupMenu.show(null, xOnTheScreen, yOnTheScreen); // Doesn't work
JPopupMenu.show(aStupidJLabelInAStupidJFrame, x, y); // Works

Спасибо

1 Ответ

1 голос
/ 04 октября 2010

Посмотрите на JPopupMenu исходный код, и вы поймете, почему вы должны установить invoker.

Отображение всплывающего меню без какого-либо существующего компонента было бы очень плохим юзабилити, в той же лиге, что ивсплывающие окна из браузера.

Почему вы не можете использовать JComponent#setComponentPopupMenu или добавить прослушиватель мыши для компонента, в котором вы хотите отобразить всплывающее меню?

...