&QfYang& 2021-05-21 18:52 采纳率: 66.7%
浏览 112
已采纳

类型不匹配:不能从元素类型 Object 转换为 Student,加粗下划线的地方

package net.fqq.student.gui;
import net.fqq.student.bean.Student;
import net.fqq.student.service.StudentService;
import net.fqq.student.service.impl.StudentServiceImpl;

import javax.swing.*;
import javax.swing.border.TitledBorder;
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
import java.util.List;

public class DeleteStudentByIdFrame extends JFrame{
    //学号标签

    private JLabel lblInputId;
    //学号文本框

    private JTextField txtId;
    /*
    面板
    */
    private JPanel panel;
    private JPanel pnlSouth;
    private JPanel pnlCenter;
    private JPanel pnlNorth;

    //按钮
    private JButton btnQuery;
    private JButton btnBrowseAll;
    private JButton btnDelete;
    private JButton btnExit;
    //记录行集
    private Vector rows;
    /*
    表格列标题
    */
    private Vector colHead;
    /*
    表格
    */
    private JTable table;
    /*
    滚动面板
    */
    private JScrollPane scroller;
    /*
    当前记录行号
    */
    private int currentRow;
    /*
    学生列表
    */
    private List students;
    /*
    创建学生服务对象
    */
    private StudentService studentService;
    /**

    构造方法
    @param title
    */
    public DeleteStudentByIdFrame(String title) {
    super(title);
    intiGUI();
    }
    private void intiGUI() {
    // 创建组件
    panel = (JPanel) getContentPane();
    pnlNorth = new JPanel();
    pnlCenter = new JPanel();
    pnlSouth = new JPanel();
     rows = new Vector();
     colHead = new Vector();

     lblInputId = new JLabel("输入学号:");
     txtId = new JTextField(10);
     txtId.setHorizontalAlignment(JTextField.CENTER);
     btnQuery = new JButton("查询[Q]");
     btnQuery.setMnemonic(KeyEvent.VK_Q);
     btnBrowseAll = new JButton("显示全部记录[A]");
     btnBrowseAll.setMnemonic(KeyEvent.VK_A);
     btnDelete = new JButton("删除查询的记录[D]");
     btnDelete.setEnabled(false);// 删除按钮不可用
     btnDelete.setMnemonic(KeyEvent.VK_D);
     btnExit = new JButton("退出[X]");
     btnExit.setMnemonic(KeyEvent.VK_X);

     // 添加组件
     panel.add(pnlSouth, BorderLayout.SOUTH);
     panel.add(pnlCenter, BorderLayout.CENTER);
     panel.add(pnlNorth, BorderLayout.NORTH);

     pnlNorth.add(lblInputId);
     pnlNorth.add(txtId);
     pnlNorth.add(btnQuery);
     pnlNorth.add(btnBrowseAll);
     pnlSouth.setLayout(new FlowLayout(FlowLayout.RIGHT));
     pnlSouth.add(btnDelete);
     pnlSouth.add(btnExit);
     pnlCenter.setLayout(new BorderLayout());

     // 创建标题边框对象
     TitledBorder tb = new TitledBorder("查询结果");
     pnlCenter.setBorder(tb);

     // 创建学生服务对象
     studentService = new StudentServiceImpl();
     // 获取全部学生列表
     students = studentService.findAllStudents();
     // 填充表格数据
     fillTableData();

     // 设置窗口大小
     setSize(600, 350);
     // 设置窗口不可调整大小
     setResizable(false);
     // 设置窗口屏幕居中
     setLocationRelativeTo(null);
     // 设置窗口标题
     setTitle("按学号删除学生记录");
     // 设置窗口可见
     setVisible(true);
     // 设置窗口默认关闭操作(卸载当前窗口)
     setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

     // 【退出】按钮单击事件
     btnExit.addActionListener(new ActionListener() {
         @Override
         public void actionPerformed(ActionEvent event) {
             dispose();
         }
     });

     // 【删除】按钮单击事件
     btnDelete.addActionListener(new ActionListener() {
         @Override
         public void actionPerformed(ActionEvent e) {
             if (!rows.isEmpty()) {
                 long choice = JOptionPane.showConfirmDialog(null, "是否要删除记录?");
                 if (choice == JOptionPane.OK_OPTION) {
                     // 获取待删学生学号
                     String id = txtId.getText().trim();
                     // 按学号删除学生
                     int count = studentService.deleteStudentById(id);
                     if (count > 0) {
                         JOptionPane.showMessageDialog(null, "记录删除成功!", "提示", JOptionPane.INFORMATION_MESSAGE);
                         // 重新获取全部学生列表
                         students = studentService.findAllStudents();
                         // 清空待删学生学号文本框
                         txtId.setText("");
                         // 填充数据
                         fillTableData();
                         // 删除按钮不可用
                         btnDelete.setEnabled(false);
                     } else {
                         JOptionPane.showMessageDialog(null, "记录删除失败!", "警告", JOptionPane.WARNING_MESSAGE);
                     }
                 }
             }
         }
     });

     // 【查询】按钮单击事件
     btnQuery.addActionListener(new ActionListener() {
         @Override
         public void actionPerformed(ActionEvent event) {
             doQuery();
         }
     });

     // 【显示全部记录】按钮单击事件
     btnBrowseAll.addActionListener(new ActionListener() {
         @Override
         public void actionPerformed(ActionEvent event) {
             // 获取全部学生记录
             students = studentService.findAllStudents();
             // 填充表格数据
             fillTableData();
             // 删除按钮不可用
             btnDelete.setEnabled(false);
         }
     });

     // 【学号】文本框按键事件
     txtId.addKeyListener(new KeyAdapter() {
         @Override
         public void keyPressed(KeyEvent e) {
             if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                 doQuery();
             }
         }
     });

     // 表格单击事件
     table.addMouseListener(new MouseAdapter() {
         public void mouseClicked(MouseEvent e) {
             // 获取当前行的行数
             int row = table.rowAtPoint(e.getPoint());
             // 选中鼠标单击的行
             table.setRowSelectionInterval(row, row);
             // 设置文本框内容
             txtId.setText(table.getValueAt(row, 0).toString());
         }
     });
    }

    /**

    查询方法
    */
    private void doQuery() {
    // 获取查询学号
    String id = txtId.getText().trim();
    if (!id.equals("")) {
    students.clear();
    Student student = studentService.findStudentById(id);
    if (student != null) {
    // 将查询到的学生添加到列表
    students.add(student);
    // 让删除按钮可用
    btnDelete.setEnabled(true);
    }
    // 填充表格
    fillTableData();
    } else {
    JOptionPane.showMessageDialog(this, "请输入待查学生学号!", "警告", JOptionPane.WARNING_MESSAGE);
    txtId.requestFocus();
    }
    }
    /**

    填充表格方法
    */
    private void fillTableData() {
    // 填充表头
    colHead.clear();
    colHead.add("学号");
    colHead.add("姓名");
    colHead.add("性别");
    colHead.add("年龄");
    colHead.add("系部");
    colHead.add("班级");
    colHead.add("电话");

    // 填充表记录
    rows.clear();
    for (Student student : students) {
    Vector currentRow = new Vector();
    currentRow.addElement(student.getId());
    currentRow.addElement(student.getName());
    currentRow.addElement(student.getSex());
    currentRow.addElement(student.getAge() + "");
    currentRow.addElement(student.getDepartment());
    currentRow.addElement(student.getClazz());
    currentRow.addElement(student.getTelephone());
    // 将当前行添加到记录行集
    rows.add(currentRow);
    }

    // 创建表格(参数1:记录集;参数2:表头)
    table = new JTable(rows, colHead);

    // 定义滚动面板
    scroller = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
    JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    // 将滚动面板添加到中心面板
    pnlCenter.add(scroller, BorderLayout.CENTER);

    // 重绘窗体
    repaint();

    // 判断是否有记录行
    if (rows.isEmpty()) {
    JOptionPane.showMessageDialog(this, "没有符合条件的记录!", "错误提示", JOptionPane.WARNING_MESSAGE);
    txtId.setText("");
    } else {
    // 让滚动条移到最上方
    scroller.getVerticalScrollBar().setValue(0);
    }
    }

    /**

    主方法
    @param args
    */
    public static void main(String[] args) {
    new DeleteStudentByIdFrame("");
    }
    }

  • 写回答

4条回答 默认 最新

  • CSDN专家-sinJack 2021-05-21 18:56
    关注

      /*
        学生列表
        */
        private List students;

    换为

     private List<Student> students;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿