如何实现电影租赁APP的浏览JPanel,支持电影搜索筛选及添加到购物车功能
Swing 电影租赁应用组件实现方案
浏览面板实现
你最初设计的单电影卡片的组件组合思路是可用的,只需要和数据层做解耦即可轻松实现搜索、筛选功能:
- 首先封装自定义电影卡片组件
- 继承
JPanel实现MovieCard自定义组件,内部封装你提到的四类元素:JLabel展示海报、JLabel展示加粗的电影标题、不可编辑的JTextArea展示简介、JButton作为加入购物车按钮,每个MovieCard实例绑定对应电影的实体类对象(实体类需包含电影ID、名称、分类、海报路径、简介、租金等字段)。
- 浏览面板整体结构
- 外层使用
BorderLayout布局的JPanel作为浏览面板根容器 - 顶部区域放置筛选搜索栏:包含用于关键词搜索的
JTextField、用于分类筛选的JComboBox、触发筛选操作的按钮 - 中间区域放置
JScrollPane,滚动视口中嵌套一个使用网格布局的JPanel作为电影卡片的承载容器,可根据需求设置每行展示的卡片数量。
- 搜索筛选逻辑实现
- 全局维护两个电影数据列表:
allMovies存储所有可租赁的全量电影数据,初始化时一次性加载;filteredMovies存储经过筛选后要展示的电影数据。 - 每次用户触发搜索/筛选操作时,按输入的关键词匹配电影名称、按选中的分类匹配电影分类字段,遍历
allMovies过滤得到filteredMovies。 - 清空承载容器中的所有组件,遍历
filteredMovies生成对应的MovieCard实例加入容器,最后调用容器的revalidate()和repaint()方法刷新界面即可。
如果你不想手动管理容器组件的增删,也可以使用JList作为承载组件,自定义ListCellRenderer直接将MovieCard作为单元格渲染项,筛选时只需要修改JList绑定的ListModel数据即可自动刷新界面。
购物车面板实现
购物车场景结构更规整,直接用表格组件实现即可:
- 外层使用
BorderLayout布局的JPanel作为购物车根容器 - 中间区域使用
JTable展示已选商品,配置TableModel设置列字段为:电影名称、单天租金、租赁时长、小计,支持动态新增/删除行。 - 底部区域放置结算栏:用
JLabel展示应付总金额,搭配「结算」按钮触发后续结账流程。 - 购物车新增逻辑:给每个
MovieCard的加入购物车按钮绑定点击监听器,点击时将当前卡片绑定的电影实体插入到购物车TableModel中,表格会自动刷新展示内容。
内容的提问来源于stack exchange,提问作者Somaiyah Sultani
相关产品推荐
相关产品推荐

