JWindow的右键菜单在失去焦点后不能自动消失

zty5678 zty5678 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JWindow;

public class Main {

public Main() {
}

static public class PopupListener extends MouseAdapter {
JPopupMenu menu;

public PopupListener(JPopupMenu menu) {
this.menu = menu;
}

public void mousePressed(MouseEvent e) {
showPopup(e);
}

public void mouseReleased(MouseEvent e) {
showPopup(e);
}

private void showPopup(MouseEvent e) {
if (e.isPopupTrigger()) {

menu.show(e.getComponent(), e.getX(), e.getY());

System.out.println("Showing menu at "
+ menu.getLocationOnScreen() + " isVisible: "
+ menu.isVisible() + " isValid: " + menu.isValid());
}
}
}


public static void main(String[] args) {
JWindow window = new JWindow();
window.setBounds(10, 10, 100, 100);

JPopupMenu popupMenu = new JPopupMenu();
JMenuItem quit = new JMenuItem("Quit");
quit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
popupMenu.add(quit);

window.addMouseListener(new PopupListener(popupMenu));


window.setFocusable(true);

window.validate();
window.setVisible(true);
}

}



上面是例子,运行后会发现,在那个JWindow上点击右键会出现"quit"的弹出菜单,在JWindow上点击左键弹出菜单会消失.....这没有问题.....问题是,将鼠标移到jwindow之外的区域点击,弹出菜单不会消失.............求解决办法.....................
...全文

相关推荐

评论 11
收藏 已收藏
分享
返回顶部
zty5678
Java SE 62,621 成员 307,251 内容