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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:27:04