package com.example.client.utils; import com.example.server.sysOss.model.SysOss; import com.example.server.sysOss.service.SysOssService; import javax.swing.*; import javax.swing.event.ChangeEvent; import javax.swing.table.DefaultTableModel; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.List; public class TableCellEditorButton extends DefaultCellEditor { private final SysOssService sysOssService; // 通过构造函数注入 private JButton btn; private Integer curRow = -1; private JTable jtable; public TableCellEditorButton(List ossList, SysOssService sysOssService) { super(new JTextField()); this.sysOssService = sysOssService; // 手动注入 this.setClickCountToStart(1); // 设置点击一次就激活 btn = new JButton("删除"); btn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JButton btn = (JButton) (e.getSource()); ChangeEvent ce = new ChangeEvent(btn); jtable.editingStopped(ce); // 停止编辑 DefaultTableModel model = (DefaultTableModel) jtable.getModel(); model.removeRow(curRow); // 从表格模型中移除行 if (ossList != null && curRow < ossList.size()) { SysOss oss = ossList.get(curRow); if (oss.getId() != null) { sysOssService.deleteLogic(oss.getId()); // 调用服务删除逻辑 } ossList.remove(curRow); // 从列表中移除 } model.fireTableDataChanged(); // 通知表格数据已更改 jtable.repaint(); // 重新绘制表格 } }); } @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { curRow = row; // 保存当前行号 jtable = table; // 保存表格引用 return btn; // 返回按钮组件 } }