Java开发中如何获取JComboBox选中的条目数量?
Java Swing 电子投票系统JComboBox投票统计与结果展示实现方案
前置准备
提前准备核心组件与统计容器的全局引用:
- 投票选择用的
JComboBox实例 - 结果展示用的
JTable实例,配套DefaultTableModel用来动态更新表格数据 - 存储投票统计结果的
Map<String, Integer> voteCountMap,初始化时将所有候选人得票数置为0
步骤1:获取JComboBox选中项并更新统计
给提交按钮绑定点击事件监听器,同时支持单选/多选场景的统计:
// 初始化统计容器,可根据你的实际候选人列表调整内容 Map<String, Integer> voteCountMap = new HashMap<>(); voteCountMap.put("候选人A", 0); voteCountMap.put("候选人B", 0); voteCountMap.put("候选人C", 0); // 提交按钮点击事件 submitBtn.addActionListener(e -> { // 单选场景获取选中条目 String selectedCandidate = (String) candidateComboBox.getSelectedItem(); // 多选场景替换为以下代码: // Object[] selectedItems = candidateComboBox.getSelectedObjects(); // int currentSelectedTotal = selectedItems.length; // 本次选中的条目总数 // 判空避免空指针异常 if (selectedCandidate != null) { // 更新对应候选人得票数 voteCountMap.put(selectedCandidate, voteCountMap.get(selectedCandidate) + 1); // 触发结果表格更新 updateVoteResultTable(); } });
步骤2:渲染结果页统计表格
通过DefaultTableModel动态更新表格数据,避免直接操作JTable本身:
// 初始化结果表格模型,表头可根据需求自定义 DefaultTableModel tableModel = new DefaultTableModel(new Object[]{"候选人名称", "得票数"}, 0); JTable resultTable = new JTable(tableModel); // 表格数据更新方法 private void updateVoteResultTable() { // 清空表格原有旧数据 tableModel.setRowCount(0); // 遍历统计容器写入最新数据 for (Map.Entry<String, Integer> entry : voteCountMap.entrySet()) { tableModel.addRow(new Object[]{entry.getKey(), entry.getValue()}); } }
注意事项
- 如果结果页是独立的
JFrame或JPanel,可将voteCountMap作为参数传入结果页构造方法后再渲染表格 - 初始化统计容器时要和JComboBox的下拉选项完全对应,避免出现选中项不在统计容器中导致的空指针问题
内容的提问来源于stack exchange,提问作者ZIDJEY
相关产品推荐
相关产品推荐

