Установить всплывающее окно - PullRequest
0 голосов
/ 22 декабря 2011

У меня есть JFrame с JTextArea: при нажатии на эту текстовую область появляется JPopupMenu с двумя элементами: «Очистить» и «Сохранить».

private void jTextArea1MousePressed(java.awt.event.MouseEvent evt) {
   jPopupMenu1.setVisible(true);
}

У меня вопрос: это всплывающее окно всегда появляется в позиции (0,0), но я хотел бы показать всплывающее окно, где щелкается мышь, внутри или относительно TextArea.

Я попытался setLocation(x,y), но этот метод всегда запрашивает в фиксированном месте, и это не то, что я ищу, и не доступен такой метод, как setLocationRelativeTo(JTextArea());

1 Ответ

1 голос
/ 22 декабря 2011

не используйте mouseListener в качестве триггера для показа всплывающего окна, вместо этого используйте свойство JComponent componentPopupMenu, например

 myTextArea.setComponentPopupMenu(myPopupMenu)

При этом по умолчанию будет отображаться всплывающее окно при щелчке правой кнопкой мыши. У него есть дополнительное преимущество, заключающееся в том, что он также покрывает всплывающие запросы, запускаемые с клавиатуры (LAF зависит, F10 от выигрыша).

Если по какой-то причине вам действительно нужно вручную показать всплывающее окно, то метод, который вы ищете -

myPopup.show(myTextArea, x, y)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...