如果点击批准后,表格删除这一行内容呢?
我想要这个小界面点批准后,表格这一行的内容就删除看不见,不知道怎么做
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 中选中的行,需要进行以下步骤:
可以在 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);
不知道你这个问题是否已经解决, 如果还没有解决的话: