Я уже пытаюсь добавить всплывающее меню в JFrame по дизайну в визуальном редакторе Netbeans, но это не работает. Может ли кто-нибудь пошагово подсказать мне, как его добавить ?? Спасибо большое!
Как добавить всплывающее меню в JFrame в визуальном редакторе netbeans
Ответы (1)
Проблема в том, что JPopupMenu
не является компонентом, который изначально виден или добавлен в контейнер. Таким образом, просто перетащив его в рамку представления дизайна, вы не окажете визуального влияния на представление дизайна.
Но если вы посмотрите на исходный код или навигатор, вы увидите jPopupMenu
, объявленный как член класса и созданный в методе initComponents()
.
Я сам пробовал разные вещи, и из того, что я пробовал, не похоже, что вы можете визуально оформить всплывающее меню. Вы можете, однако, использовать навигатор, чтобы спроектировать его.
- В навигаторе вы увидите файл
jPopupMenu1
. Вы можете добавитьJMenus
илиJMenuItems
, щелкнув его правой кнопкой мыши и выбравAdd from Palette
. - Затем вы можете добавить слушателя к
JMenuItem
, щелкнув правой кнопкой мышиJMenuItem
в навигаторе и выбравEvents -> Actions -> actionPerformed
.
Чтобы появился JPopupMenu
, вам нужно добавить MouseListener
к компоненту, будь то рама или другой компонент. Например (к кадру):
- Выберите кадр в навигаторе, щелкните его правой кнопкой мыши и выберите
Events -> Mouse ->
, и вам нужно будет реализовать какmousePressed
, так иmouseReleased
, так как разные платформы имеют разные триггеры всплывающих окон, Windows —mouseReleased
, а Mac —mousePressed
( не цитируйте меня). Создайте метод для отображения всплывающего меню.
private void showPopupMenu(MouseEvent e) { jPopupMenu1.show(this, e.getX(), e.getY()); }
Реализуйте свои методы
mousePressed
иmouseReleased
private void formMousePressed(MouseEvent evt) { if (evt.isPopupTrigger()) { showPopupMenu(evt); } } private void formMouseReleased(MouseEvent evt) { if (evt.isPopupTrigger()) { showPopupMenu(evt); } }