【问题标题】:ArrayList to JTableArrayList 到 JTable
【发布时间】:2023-03-12 09:18:01
【问题描述】:

我正在尝试从 SQL srv 加载 JTable 中的数据。我在尝试转换 ArrayList 并将其加载到 JTable 时遇到了麻烦。 当我尝试应该显示列表的表格下方的代码显示“[L].java.lang.String@bf053f”

 private void searchCourseGrades() {
StudentsWithGradeTable.setModel(dtmCoursesGrades);
String ccode = SearchCidTextfield.getText();

try {
    dtmCoursesGrades.setDataVector(
        controller.findAllStudentsFromStudied(ccode),
        coursesGradesColumns);

    if (ccode.equals("")) {
    JOptionPane.showMessageDialog(this,
        "Please enter a Course Code");

    } else {
    dtmCoursesGrades.setRowCount(0);
    dtmCoursesGrades.fireTableDataChanged();
    Studied findStudentFromStudied = null;
    findStudentFromStudied = controller
        .findCourseFromStudied(ccode);

    String[] crsgr = new String[2];

    for (int i = 0; i < crsgr.length; i++) {
    crsgr[0] = findStudentFromStudied.getSpnr();
    crsgr[1] = findStudentFromStudied.getGrade();
    dtmCoursesGrades.addRow(new Object []{crsgr});
    dtmCoursesGrades.fireTableDataChanged();
    }
    }

} catch (SQLException exception) {
    JOptionPane.showMessageDialog(this,
        "Cannot find a course with Course Code " + ccode
            + ". Please try a new number.");
}

}

MainForm 引用的控制器如下所示:

private String[][] finishedArrayList(ArrayList<Studied> finished) {
String[][] finishedStudents = new String[finished.size()][3];

for (int i = 0; i < finished.size(); i++) {
    Studied finish = finished.get(i);

    finishedStudents[i][0] = finish.getSpnr();
    finishedStudents[i][1] = finish.getCcode();
    finishedStudents[i][2] = finish.getGrade();
}

return finishedStudents;
}

public String[][] findAllStudentsFromStudied(String ccode)
    throws SQLException {
return finishedArrayList(dal.findAllStudentsFromStudied(ccode));

控制器引用的 DAL 如下所示:

 public ArrayList<Studies> findAllStudentsFromStudies(String ccode)
    throws SQLException {

ArrayList<Studies> stlist = new ArrayList<Studies>();
Statement stmt = con.createStatement();
String sqlStr = "SELECT * FROM Studies WHERE ccode = '" + ccode + "'";
ResultSet rs = stmt.executeQuery(sqlStr);

while (rs.next()) {
    Studies st = new Studies();
    st.setSpnr(rs.getString(1));

    stlist.add(st);
}
rs.close();
stmt.close();
return stlist;
}

【问题讨论】:

  • 那会是什么麻烦?如果有异常,请给我们stacktrace,以便其他人详细描述发生了什么或没有发生什么。
  • 请将您的问题归结为 ArrayList jTable 部分。不需要数据库查询,因为它们与您的问题无关。

标签: java sql swing arraylist jtable


【解决方案1】:

尝试dtmCoursesGrades.addRow(new Object []{crsgr[0], crsgr[1]}); 而不是dtmCoursesGrades.addRow(new Object []{crsgr});

【讨论】:

  • 当我改变这个时,我收到学生 ID 栏:8 8 年级栏:E E 这是不正确的,我有几个不同学生 ID 的成绩..
  • @SLI 是controller.findCourseFromStudied(ccode);返回的数据。尝试更多调试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-19
  • 2013-01-23
  • 2013-12-29
  • 2017-07-27
  • 2015-10-31
  • 2013-04-04
  • 2012-01-27
相关资源
最近更新 更多