我有一个带有JTextArea的JFrame:通过点击这个TextArea,JPopupMenu出现了两个项目" Clear"和"保存"。
private void jTextArea1MousePressed(java.awt.event.MouseEvent evt) {
jPopupMenu1.setVisible(true);
}
我的问题是:这个弹出窗口总是出现在位置(0,0)但是我想显示弹出鼠标单击的位置,在TextArea内部或相对于TextArea。
我已尝试setLocation(x,y)
但此方法始终在固定位置提示,而不是我所寻求的,并且它不可用于setLocationRelativeTo(JTextArea());
答案 0 :(得分:1)
不要使用mouseListener作为触发器来显示弹出窗口,而是使用JComponent componentPopupMenu属性,比如
myTextArea.setComponentPopupMenu(myPopupMenu)
默认情况下,这样做会在鼠标位置右键单击弹出窗口。它还具有覆盖键盘触发(LAF dependend,F10 on win)弹出请求的额外好处。
如果出于某种原因你真的需要手动显示弹出窗口,那么你正在寻找的方法是
myPopup.show(myTextArea, x, y)