Java 实现鼠标单击右键弹出菜单项

在界面的任意地方鼠标右键点击出现一个菜单项 "Intro",并且点击该项后弹出一个新窗口。

java 复制代码
public class frame extends JFrame   {

    public frame() {
        setTitle("title");
        setSize(500, 500);

       // JPopupMenu 用于创建和显示弹出菜单
        JPopupMenu popupMenu = new JPopupMenu();
        
        // JMenuItem 用于表示菜单中的一个操作选项,文本设置为"Intro"
        JMenuItem introItem = new JMenuItem("Intro");
        
        // 为JMenuItem 添加监听器
        introItem.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                showIntroWindow();
            }
        });
        
        // 将菜单项添加到弹出菜单中
        popupMenu.add(introItem);
        
        // 右键点击事件
        addMouseListener(new MouseAdapter() {
            @Override
            public void mousePressed(MouseEvent e) {
                showPopupMenu(e);
            }

            @Override
            public void mouseReleased(MouseEvent e) {
                showPopupMenu(e);
            }

            private void showPopupMenu(MouseEvent e) {
                if (e.isPopupTrigger()) { // 检查是否是右键点击,在点击位置显示弹出菜单
                    popupMenu.show(e.getComponent(), e.getX(), e.getY()); 
                }
            }
//popupMenu是一个JPopupMenu对象
//e.getComponent()获取事件源组件,e.getX()和e.getY()获取鼠标点击的坐标。

        });
}}

点击菜单"Intro"后,弹出窗口,窗口可以定义如下:

java 复制代码
    //introduction窗口
    private void showIntroWindow() {

        JFrame newFrame = new JFrame("introduction");
        newFrame.setSize(300, 300);
        //other
    }

// JFrame是Swing中用于创建窗口的类,作为顶级窗口容器,其中通常包含其他 UI 组件。

Swing是一个图形用户界面(Graphical User Interface, GUI)开发工具包。

相关推荐
czlczl200209251 小时前
告别 try-catch 地狱:Spring Boot 全局异常处理 (GlobalExceptionHandler) 最佳实践
java·spring boot·后端
Goldn.7 小时前
Java核心技术栈全景解析:从Web开发到AI融合
java· spring boot· 微服务· ai· jvm· maven· hibernate
李慕婉学姐8 小时前
【开题答辩过程】以《基于Android的出租车运行监测系统设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·后端·vue
m0_740043738 小时前
SpringBoot05-配置文件-热加载/日志框架slf4j/接口文档工具Swagger/Knife4j
java·spring boot·后端·log4j
编织幻境的妖9 小时前
SQL查询连续登录用户方法详解
java·数据库·sql
未若君雅裁9 小时前
JVM面试篇总结
java·jvm·面试
kk哥88999 小时前
C++ 对象 核心介绍
java·jvm·c++
招风的黑耳10 小时前
我用SpringBoot撸了一个智慧水务监控平台
java·spring boot·后端
xunyan623410 小时前
面向对象(下)-接口的理解
java·开发语言
程序员游老板10 小时前
基于SpringBoot3+vue3的爱心陪诊平台
java·spring boot·毕业设计·软件工程·课程设计·信息与通信