JList中添加右键菜单(JPopupMenu)

本文介绍了如何在Java的JList组件中添加右键菜单,包括定义和初始化变量,将JPopupMenu添加到JList,添加鼠标监听器以及实现鼠标监听器的详细步骤。通过实现MouseAdapter并检查鼠标右键点击以及JList选中项,可以在指定位置显示右键菜单。
 
在一些组件中添加右键菜单很久以来我都没有掌握,一直都觉得挺难的(真的感觉好象自己比较笨,但我有阿呆的精神,果然今天成功了,弄懂了),但是弄懂以后感觉还真好,所以写一下纪念一下吧,同时和大家共同分享一下。
 
1:定义变量。
JList jList ;
JPopupMenu jPopupMenu;
JMenuItem jMenuItem;
JRadioButtonMenuItem jRadioButtonMenuItem;
JCheckBoxMenuItem jCheckBoxMenuItem;
JSeparator jSeparator;
 
2:初始化成员变量。
省了,不写了。
3:将右键(JPopupMenu)菜单添加到列表(JList)中
jList1.add(jPopupMenu);
 
4:为JList添加鼠标监听器
jList.addMouseListener(new myJListListener());
 
5:实现鼠标监听器
Public class myJListListener extends MouseAdapter {
      //e.getButton() 返回值有 1,2,3。1代表鼠标左键,3代表鼠标右键
      //jList.getSelected() 返回的是选中的JList中的项数。
主窗口:包含标题栏(显示 “地铁自动售票机”)、菜单栏(包含 “操作”“帮助” 等菜单)、主操作区(初始显示欢迎界面或线路选择入口)。​ 分辨率设置:适配自动售票机常见屏幕尺寸(如 1024×768 像素)。​ 线路选择对话框:展示地铁线路图(可用图标或文字列表表示),支持用户点击选择线路,包含 “确定”“取消” 按钮。​ 站点选择对话框:根据所选线路显示对应站点列表(按顺序排列),支持用户勾选目标站点,包含 “上一步”“下一步” 按钮。​ 票数输入对话框:提供输入框或加减按钮,支持用户输入 1-10 张票数,包含 “确认”“重置” 按钮。​ 支付确认对话框:显示总金额,提供现金、扫码支付等选项图标,包含 “支付完成”“取消支付” 按钮。​ 找零提示对话框:支付完成后显示找零金额,包含 “确定” 按钮。​ 菜单设计:​ 菜单栏:包含 “操作” 菜单(子菜单为 “线路选择”“站点选择”“票数输入” 等,对应调用各对话框)、“帮助” 菜单(子菜单为 “操作指南”“关于我们”)。​ 2. 界面框架搭建 创建主窗口类:新建 Java 类 “MainFrame”,继承 JFrame 类,设置窗口标题为 “地铁自动售票机”,尺寸为 1024×768 像素,设置默认关闭方式为 EXIT_ON_CLOSE。​ 设计主操作区:在主窗口中添加 JPanel 作为主操作区,设置背景颜色为浅灰色,添加欢迎文字(如 “欢迎使用地铁自动售票机,请选择线路”)。​ 添加菜单栏:创建 JMenuBar 对象,添加 “操作” 菜单(JMenu)和 “帮助” 菜单,将菜单添加到主窗口。​ 3. 对话框设计​ 线路选择对话框:​ 新建类 “LineDialog”,继承 JDialog,设置标题为 “选择线路”。​ 添加 JPanel 面板,导入 2-3 条地铁线路图标(如 1 号线红色图标、2 号线蓝色图标),设置为按钮形式(JButton),点击时记录所选线路。​ 添加 “确定”“取消” 按钮,“确定” 按钮点击后关闭对话框并跳转到站点选择对话框。​ 站点选择对话框:​ 新建类 “StationDialog”,继承 JDialog,根据传入的线路参数显示对应站点(如 1 号线站点为 “站 A、站 B、站 C”),使用 JList 或 JCheckBox 展示站点。​ 添加 “上一步”(返回线路选择对话框)和 “下一步”(进入票数输入对话框)按钮,绑定点击事件。​ 票数输入对话框:​ 新建类 “TicketNumDialog”,继承 JDialog,添加 JLabel 显示 “请输入票数(1-10 张)”。​ 添加 JTextField 作为输入框,或添加 “+”“-” 按钮控制票数(初始值为 1,最大值 10,最小值 1)。​ 添加 “确认” 和 “重置” 按钮,“确认” 按钮点击时校验输入(若为 0 或负数,暂不关闭对话框,后续步骤添加错误提示)。​ 支付确认对话框与找零提示对话框:​ 支付确认对话框(“PaymentDialog”):计算总金额(票价 × 票数,假设单票 5 元),显示金额标签和支付方式图标按钮,点击 “支付完成” 后打开找零提示对话框。​ 找零提示对话框(“ChangeDialog”):显示 “找零金额:X 元”,添加 “确定” 按钮,点击后关闭所有对话框,返回主窗口。​ 4. 菜单设计​ 创建菜单栏:在 “MainFrame” 类中,创建 JMenuBar 对象 “menuBar”。​ 新建 “操作” 菜单(JMenu “operationMenu”),添加菜单 “线路选择”(JMenuItem “lineItem”)、“站点选择”(“stationItem”)等,为每个子菜单添加 ActionListener,点击时弹出对应对话框(如 lineItem.addActionListener (e -> new LineDialog ().setVisible (true)))。​ 新建 “帮助” 菜单(JMenu “helpMenu”),添加菜单 “操作指南”(“guideItem”)、“关于我们”(“aboutItem”),点击 “操作指南” 时打开帮助文档。​ 将菜单添加到 menuBar,再将 menuBar 设置为主窗口的菜单栏(setJMenuBar (menuBar))。​ 创建弹出菜单:在主操作区 JPanel 中添加鼠标监听器,右键点击时弹出 JPopupMenu,包含 “重新开始”(重置操作流程)和 “退出”(关闭程序)选项,绑定对应事件。
最新发布
11-05
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值