You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现电影租赁APP的浏览JPanel,支持电影搜索筛选及添加到购物车功能

Swing 电影租赁应用组件实现方案

浏览面板实现

你最初设计的单电影卡片的组件组合思路是可用的,只需要和数据层做解耦即可轻松实现搜索、筛选功能:

  1. 首先封装自定义电影卡片组件
  • 继承JPanel实现MovieCard自定义组件,内部封装你提到的四类元素:JLabel展示海报、JLabel展示加粗的电影标题、不可编辑的JTextArea展示简介、JButton作为加入购物车按钮,每个MovieCard实例绑定对应电影的实体类对象(实体类需包含电影ID、名称、分类、海报路径、简介、租金等字段)。
  1. 浏览面板整体结构
  • 外层使用BorderLayout布局的JPanel作为浏览面板根容器
  • 顶部区域放置筛选搜索栏:包含用于关键词搜索的JTextField、用于分类筛选的JComboBox、触发筛选操作的按钮
  • 中间区域放置JScrollPane,滚动视口中嵌套一个使用网格布局的JPanel作为电影卡片的承载容器,可根据需求设置每行展示的卡片数量。
  1. 搜索筛选逻辑实现
  • 全局维护两个电影数据列表:allMovies存储所有可租赁的全量电影数据,初始化时一次性加载;filteredMovies存储经过筛选后要展示的电影数据。
  • 每次用户触发搜索/筛选操作时,按输入的关键词匹配电影名称、按选中的分类匹配电影分类字段,遍历allMovies过滤得到filteredMovies。
  • 清空承载容器中的所有组件,遍历filteredMovies生成对应的MovieCard实例加入容器,最后调用容器的revalidate()和repaint()方法刷新界面即可。

如果你不想手动管理容器组件的增删,也可以使用JList作为承载组件,自定义ListCellRenderer直接将MovieCard作为单元格渲染项,筛选时只需要修改JList绑定的ListModel数据即可自动刷新界面。

购物车面板实现

购物车场景结构更规整,直接用表格组件实现即可:

  • 外层使用BorderLayout布局的JPanel作为购物车根容器
  • 中间区域使用JTable展示已选商品,配置TableModel设置列字段为:电影名称、单天租金、租赁时长、小计,支持动态新增/删除行。
  • 底部区域放置结算栏:用JLabel展示应付总金额,搭配「结算」按钮触发后续结账流程。
  • 购物车新增逻辑:给每个MovieCard的加入购物车按钮绑定点击监听器,点击时将当前卡片绑定的电影实体插入到购物车TableModel中,表格会自动刷新展示内容。

内容的提问来源于stack exchange,提问作者Somaiyah Sultani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 17:54:05