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