java JTable 如何刷新表格内容

如果点击批准后,表格删除这一行内容呢?
我想要这个小界面点批准后,表格这一行的内容就删除看不见,不知道怎么做

img

package Functional.Teacher;

import info.LeaveData;

import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import java.awt.event.MouseAdapter;
import java.util.List;

import static toolbox.CSVToClass.CSV_to_LeaveData;

public class dataTable {
    public static void showTable( JPanel panel_leave){

        List dataList = CSV_to_LeaveData(); //读取数据,并转成LeaveData对象列表
        for (int i=0 ;i//筛选掉审批过的
            if ((dataList.get(i).getState().equals("请假成功")||dataList.get(i).getState().equals("请假失败")||dataList.get(i).getState().equals("销假成功")||dataList.get(i).getState().equals("销假失败"))){
                dataList.remove(i);
                i--;
            }
        }

        String[] columnName = new String[]{"编号", "姓名","学号","班级","开始时间" ,"结束时间", "申请状态", "申请理由"};
        String[][] columnDate = new String[dataList.size()][];
        for (int i =0;iLeaveData d = dataList.get(i);
            columnDate[i] = new String[]{d.getNum(),d.getName(),d.getID(),d.getClassName(),d.getStartTime(),d.getEndEime(),d.getState(),d.getReason()};
        }

        DefaultTableModel dtm = new DefaultTableModel(columnDate, columnName);
        JTable jtable = new JTable(dtm) {
            //可选择表格行,但不可编辑
            public boolean isCellEditable(int row, int column) {
                return false;
            }
        };
        jtable.setShowVerticalLines(false); //去掉竖线
        DefaultTableCellRenderer r = new DefaultTableCellRenderer(); //此三行 内容居中
        r.setHorizontalAlignment(JLabel.CENTER);
        jtable .getTableHeader().setReorderingAllowed(false);//  表头不可拖动
        jtable.setDefaultRenderer(Object.class, r);
        JScrollPane scrollPane = new JScrollPane(); //直接添加容器,表头不显示
        scrollPane.setBounds(10, 70, 620, 400);
        panel_leave.add(scrollPane);
        scrollPane.setViewportView(jtable);

        //给table加上一个鼠标事件监听器对象
        jtable.addMouseListener(new MouseAdapter() {
            public void mouseReleased(java.awt.event.MouseEvent e) {
                //是否左建双击
                if (e.getClickCount() == 2 && SwingUtilities.isLeftMouseButton(e)) {
                    //添加双击后的
                    int count = jtable.getSelectedRow();//获取你选中的行号
                    new TeacherReviewFrame(dataList.get(count));


                }
            }

        });
    }
}


该回答引用GPTᴼᴾᴱᴺᴬᴵ
要删除 JTable 中选中的行,需要进行以下步骤:

  1. 获取 JTable 的数据模型 DefaultTableModel。
  2. 获取 JTable 的选中行号。
  3. 通过 DefaultTableModel 的 removeRow() 方法删除选中的行。
  4. 调用 JTable 的 updateUI() 方法刷新表格。

可以在 TeacherReviewFrame 界面中添加一个 “批准” 按钮,并为其添加一个 ActionListener 监听器。在监听器中,可以实现以上步骤来删除选中的行。具体实现如下:

public class TeacherReviewFrame extends JFrame {

    private LeaveData data;

    public TeacherReviewFrame(LeaveData data) {
        this.data = data;
        // ...
    }

    // ...

    private void initButton() {
        JButton btnApprove = new JButton("批准");
        btnApprove.setBounds(20, 250, 80, 30);
        btnApprove.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                int[] rows = jtable.getSelectedRows(); // 获取选中行号
                DefaultTableModel model = (DefaultTableModel) jtable.getModel(); // 获取表格数据模型
                for (int i = rows.length - 1; i >= 0; i--) {
                    model.removeRow(rows[i]); // 删除选中行
                }
                jtable.updateUI(); // 刷新表格
                // TODO: 在这里添加将批准信息写入文件的代码
            }
        });
        add(btnApprove);
    }
}

需要注意的是,以上代码只是在表格中删除选中行,而没有将批准的信息写入文件或数据库中,需要根据实际需求进行相应的修改。

https://blog.csdn.net/weixin_41907754/article/details/125667247

//这里根据你的操作重新获取tableModel 
TableModel tableModel = new DefaultTableModel(columnData, columnName);
//然后把它放在table里,就刷新了
table.setModel(tableModel);

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^