Java Swing点击选择按钮后数据未显示在目标表格的问题
问题:点击“选择”按钮后数据未显示在目标表格中
我编写了btnPilihActionPerformed()方法处理“选择”按钮的点击事件,尝试从三个表格的选中行获取数据,再通过loadData()方法将数据插入到另一表格中。但点击按钮后,目标表格并未显示数据,以下是我的代码片段:
private void btnPilihActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String id, nama, harga; int tabelDipilih = -1; // -1 表示未选中任何表格 int i = jTable1.getSelectedRow(); int f = jTable2.getSelectedRow(); int g = jTable3.getSelectedRow(); if (i >= 0) { tabelDipilih = 1; // 选中jTable1 } else if (f >= 0) { tabelDipilih = 2; // 选中jTable2 } else if (g >= 0){ tabelDipilih = 3; // 选中jTable3 } try { switch (tabelDipilih) { // 根据选中的表格执行逻辑 case 1: // 从jTable1获取数据 id = jTable1.getValueAt(i, 0).toString(); nama = jTable1.getValueAt(i, 1).toString(); harga = jTable1.getValueAt(i, 4).toString(); loadData(); break; case 2: // 从jTable2获取数据 id = jTable2.getValueAt(f, 0).toString(); nama = jTable2.getValueAt(f, 1).toString(); harga = jTable2.getValueAt(f, 4).toString(); loadData(); break; case 3: // 从jTable3获取数据 id = jTable3.getValueAt(g, 0).toString(); nama = jTable3.getValueAt(g, 1).toString(); harga = jTable3.getValueAt(g, 4).toString(); loadData(); break; default: // 处理未选中的情况(比如弹出提示) } } catch (Exception e) { JOptionPane.showMessageDialog(null, "Gagal mengambil data menu. Silahkan coba lagi."); return; } dispose(); }
问题分析与修复方案
核心问题
你已经成功从选中行获取了id、nama、harga的值,但没有将这些数据传递给loadData()方法。loadData()完全不知道要插入什么内容,自然无法更新目标表格。
修复步骤
修改
loadData()方法,添加参数接收数据
把loadData()改成带参数的方法,让它能接收你获取到的三个值:private void loadData(String id, String nama, String harga) { // 这里实现向目标表格插入数据的逻辑 // 示例(假设目标表格是targetTable,使用DefaultTableModel): DefaultTableModel targetModel = (DefaultTableModel) targetTable.getModel(); targetModel.addRow(new Object[]{id, nama, harga}); }调用
loadData()时传入数据
在每个case分支里,调用loadData()时把获取到的变量传进去:// 以case 1为例,其他分支同理 case 1: id = jTable1.getValueAt(i, 0).toString(); nama = jTable1.getValueAt(i, 1).toString(); harga = jTable1.getValueAt(i, 4).toString(); loadData(id, nama, harga); // 传入数据 break;完善未选中的提示逻辑
在default分支里添加提示,避免用户点击按钮后无反馈:default: JOptionPane.showMessageDialog(null, "请先选中任意一行数据"); break;检查
loadData()的内部逻辑- 确认目标表格的
TableModel类型是否正确(比如DefaultTableModel) - 确保插入数据后,
TableModel能自动触发表格刷新(DefaultTableModel的addRow()方法会自动触发) - 如果目标表格使用了自定义
TableModel,要确保实现了数据添加和通知视图刷新的逻辑
- 确认目标表格的
内容的提问来源于stack exchange,提问作者Siti Farianti
相关产品推荐
相关产品推荐

