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

Swing JTable开发求助:实现Price*Quantity总价计算功能

实现JTable总价计算功能方案

我来帮你搞定这个总价计算的功能!其实核心就是遍历表格里的每一行数据,计算每行价格和数量的乘积,最后累加起来就行。下面是具体的实现步骤和代码示例:

关键前提

首先要确保你的JTable使用的是DefaultTableModel,这个模型能方便我们动态添加行、获取每行的数据。如果之前没指定,初始化表格的时候可以这么写:

// 初始化表格模型,定义三列的列名
DefaultTableModel tableModel = new DefaultTableModel(new String[]{"Drink", "Price", "Quantity"}, 0);
JTable drinkTable = new JTable(tableModel);

完善Add按钮功能(补充你的现有代码)

先把添加行的逻辑补全,确保用户输入的内容能正确加到表格里:

private void jButtonAjoutActionPerformed(java.awt.event.ActionEvent evt) {
    // 依次获取用户输入的饮品名称、价格、数量
    String drinkName = JOptionPane.showInputDialog("请输入饮品名称:");
    String priceInput = JOptionPane.showInputDialog("请输入单价:");
    String quantityInput = JOptionPane.showInputDialog("请输入数量:");
    
    // 简单校验输入(避免空值)
    if (drinkName != null && !drinkName.trim().isEmpty() 
        && priceInput != null && quantityInput != null) {
        // 将输入内容添加到表格模型中
        ((DefaultTableModel) drinkTable.getModel()).addRow(new Object[]{drinkName, priceInput, quantityInput});
    }
}

核心:Total按钮的总价计算逻辑

这部分是你需要的关键功能,给Total按钮绑定点击事件,遍历表格计算总价:

private void jButtonTotalActionPerformed(java.awt.event.ActionEvent evt) {
    DefaultTableModel tableModel = (DefaultTableModel) drinkTable.getModel();
    double totalPrice = 0.0;
    
    // 遍历表格的每一行数据
    for (int row = 0; row < tableModel.getRowCount(); row++) {
        // 获取当前行的价格和数量字符串
        String priceStr = tableModel.getValueAt(row, 1).toString();
        String quantityStr = tableModel.getValueAt(row, 2).toString();
        
        try {
            // 转换为数值类型(价格用double,数量用int)
            double price = Double.parseDouble(priceStr);
            int quantity = Integer.parseInt(quantityStr);
            
            // 累加当前行的总价
            totalPrice += price * quantity;
        } catch (NumberFormatException e) {
            // 处理非数字输入的情况,避免程序崩溃
            JOptionPane.showMessageDialog(null, 
                "第" + (row + 1) + "行的价格/数量格式错误,请输入数字!", 
                "输入错误", JOptionPane.ERROR_MESSAGE);
            return; // 遇到错误就停止计算
        }
    }
    
    // 用JOptionPane展示最终总价,保留两位小数更规范
    JOptionPane.showMessageDialog(null, 
        "总价:$" + String.format("%.2f", totalPrice), 
        "计算结果", JOptionPane.INFORMATION_MESSAGE);
}

额外提示

  • 你可以根据需求加强输入校验,比如限制价格不能为负数、数量必须是正整数等
  • 确保按钮和事件处理方法已经在GUI设计器里正确绑定(比如用NetBeans的话,右键按钮选"Events"->"Action"->"actionPerformed"关联方法)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:42:36