设置弹出位置

时间:2011-12-22 16:21:24

标签: swing netbeans

我有一个带有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());

等方法

1 个答案:

答案 0 :(得分:1)

不要使用mouseListener作为触发器来显示弹出窗口,而是使用JComponent componentPopupMenu属性,比如

 myTextArea.setComponentPopupMenu(myPopupMenu)

默认情况下,这样做会在鼠标位置右键单击弹出窗口。它还具有覆盖键盘触发(LAF dependend,F10 on win)弹出请求的额外好处。

如果出于某种原因你真的需要手动显示弹出窗口,那么你正在寻找的方法是

myPopup.show(myTextArea, x, y)