Swing-JTable(查询记录)8/9
发布日期:2021-05-14 04:14:35 浏览次数:19 分类:精选文章

本文共 1572 字,大约阅读时间需要 5 分钟。

优化后的代码展示:

private void onSearch() {
String filter = searchField.getText().trim();
if (filter.isEmpty()) { // 过滤条件为空
tableModel.setRowCount(0); // 清空表格
for (Student s : backupList) { // 从备份列表中逐个添加记录
addTableRow(s);
}
backupList = null;
enablebuttons(); // 恢复按钮和其他功能按钮
return;
}
if (backupList == null) { // 首次执行,备份数据
backupList = new ArrayList<>();
for (int i = 0; i < tableModel.getRowCount(); i++) {
Student s = new Student();
s.setName(tableModel.getValueAt(i, 0)); // 获取对应行的数据
backupList.add(s);
}
}
if (!filter.isEmpty()) { // 有过滤条件
List
filtered = new ArrayList<>();
for (Student s : backupList) {
if (s.getName().indexOf(filter) >= 0) {
filtered.add(s);
}
}
displayResult(filtered);
}
disablebuttons(); // 禁用编辑、删除和添加按钮
}
private void enablebuttons() {
addButton.setEnabled(true);
deleteButton.setEnabled(true);
editButton.setEnabled(true);
}
private void disablebuttons() {
addButton.setEnabled(false);
deleteButton.setEnabled(false);
editButton.setEnabled(false);
}
private void displayResult(List
filtered) {
tableModel.setRowCount(0); // 清空表格
for (Student s : filtered) {
addTableRow(s);
}
}

详细解释:

  • 首先检查搜索框是否为空,若为空则恢复原始数据
  • 如果是首次查询,备份当前数据到backupList中
  • 对于非首次查询,使用过滤条件筛选出符合条件的数据
  • 最后根据筛选结果或备份数据填充表格
  • 在不同操作点启用或禁用相关按钮
  • 通过分割函数使代码更易读并保持原有功能不变
  • 注:以上代码仅展示核心逻辑,实际需要根据实际项目需求补充完整Class和相关方法。

    上一篇:Java-学生信息管理系统
    下一篇:Swing-JTable(修改记录)7/9

    发表评论

    最新留言

    哈哈,博客排版真的漂亮呢~
    [***.90.31.176]2025年04月14日 09时23分20秒