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

Java Swing收银台:jTextField数据无法添加到jTable的问题求助

解决杂货收银台程序中jButton点击添加数据的NumberFormatException问题

嘿,我之前做类似的Swing收银台程序时也踩过这个坑!你的错误提示已经把问题根源明明白白指出来了——java.lang.NumberFormatException,输入字符串是" 1",这说明你在Qty输入框里的内容带有前导空格,而Integer.parseInt()方法没办法解析带空白的字符串,直接就抛出异常了。而且原项目复制过来也有问题,大概率是原教程没考虑到用户实际输入时可能不小心敲入空格的场景。

给你几个具体的解决步骤:

  • 第一步:清理输入内容的空白字符
    给每个输入框的文本加上trim()方法,它会自动去掉字符串前后的所有空白(包括空格、制表符这些),这样就算用户手滑多敲了空格,也能被处理掉。
  • 第二步:增加空值校验
    在解析数字之前,先检查trim后的字符串是否为空,避免用户没输入内容就点击按钮导致的异常。
  • 第三步:用try-catch包裹解析逻辑
    就算处理了空格,还是可能有用户输入非数字的情况,用try-catch捕获异常,给用户友好的提示,而不是直接崩溃。

修改后的jButton1ActionPerformed方法示例代码:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // 获取输入并清理前后空白
    String nama = jTextFieldNama.getText().trim();
    String hargaInput = jTextFieldHarga.getText().trim();
    String qtyInput = jTextFieldQty.getText().trim();
    
    // 检查必填项是否为空
    if (nama.isEmpty() || hargaInput.isEmpty() || qtyInput.isEmpty()) {
        JOptionPane.showMessageDialog(this, "请填写完整的商品名称、价格和数量!");
        return;
    }
    
    try {
        // 解析为整数
        int harga = Integer.parseInt(hargaInput);
        int qty = Integer.parseInt(qtyInput);
        
        // 向表格添加数据(假设你的表格用的是DefaultTableModel)
        DefaultTableModel tableModel = (DefaultTableModel) jTable1.getModel();
        tableModel.addRow(new Object[]{nama, harga, qty});
        
        // 清空输入框,提升用户体验
        jTextFieldNama.setText("");
        jTextFieldHarga.setText("");
        jTextFieldQty.setText("");
    } catch (NumberFormatException e) {
        // 捕获数字格式异常,提示用户
        JOptionPane.showMessageDialog(this, "价格和数量必须输入有效的整数哦!");
        e.printStackTrace(); // 控制台打印错误信息,方便调试
    }
}

另外,如果你希望从根源上减少这种问题,还可以给Qty和Harga的输入框设置输入限制,只允许用户输入数字和退格键,这样就能从一开始避免非数字内容的输入啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:03:19