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<SysOss> 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; // 返回按钮组件
|
}
|
}
|