我无法弄清楚这一点(过去2-3小时一直试图解决这个问题)。我想显示一个arraylist的内容,但它们没有出现在表中,也没有错误,它们根本就没有出现。这是我的代码:
private class examinations{
private int id;
private int candidate_id;
private String date;
private String exam;
private String examNumber;
public examinations(int id, int student_id, String date, String exam, String examNumber) {
this.id = id;
this.student_id = student_id;
this.date = date;
this.exam= exam;
this.examNumber= examNumber;
}
public ArrayList ListExams(){
ArrayList<exams> list = new ArrayList<exams>();
return list;
}
public void addRollToTable(){
DefaultTableModel model = (DefaultTableModel)tableExams.getModel();
ArrayList<exams> list = ListExams();
Object rowData[] = new Object[5];
for(int i = 0; i < list.size(); i++) {
rowData[0] = list.get(i).id;
rowData[1] = list.get(i).student_id;
rowData[2] = list.get(i).date;
rowData[3] = list.get(i).exam;
rowData[4] = list.get(i).examNumber;
model.addRow(rowData);
}
}
我测试了这个循环,其他列表中出现的变量就在那里,所以System.out.println(list.get(i).exam);
会显示我键入的正确内容。但是,表格不会显示我在rowData中添加的内容。它再次没有错误。我来看看DefaultTableModel代码。这段代码在我班级的private void initComponents()
中...
Object [][] data = {};
String[] columnNames = {"Id", "Student_Id", "Date", "Exam",
"Exam_number"};
tableExams= new javax.swing.JTable();
DefaultTableModel model = new DefaultTableModel(data, columnNames);
tableExams.setModel(model);
tableExams.setCursor(new java.awt.Cursor(java.awt.Cursor.TEXT_CURSOR));
jScrollPane4.setViewportView(tableExams);
我一直在读这个:DefaultTableModel Class Overview但我还是找不到我错的地方......有人可以给小费吗?
首先学习和使用Java命名约定:
通过示例学习,不要自己制定约定。
所以是System.out.println(list.get(i).exam);将显示我键入的正确的东西
我不知道这是怎么可能的。您的代码如下:
a)首先,从“listExams()方法中检索ArrayList。
ArrayList<exams> list = ListExams();
b)但是在“listExams()”方法中,您所做的只是创建一个空的ArrayList。
ArrayList<exams> list = new ArrayList<exams>();
因此,您缺少实际将数据添加到ArrayList的逻辑。
根据提供的逻辑,您甚至不需要ArrayList。只需从Examination类中获取数据并将其添加到TableModel:
Object rowData[] = new Object[5];
rowData[0] = id;
rowData[1] = student_id;
rowData[2] = date;
rowData[3] = exam;
rowData[4] = examNumber;
model.addRow(rowData);
对于不同的解决方案,您可以创建自定义TableModel来保存“Exam”对象。查看Row Table Model,了解如何完成此操作的分步示例。
好吧,我解决了它,即使这只是一个解决方法,我会接受它。
我所做的就是使用this.setVisible(false)
,然后在另一个JFrame中输入信息。单击添加,我创建第一个JFrame的对象,传递所有变量,使用this.dispose()
然后调用.setVisible(true)
返回到显示信息的表。 LOL是一个长期测试和重写代码,实际上实现它是一个小...
对不起,我不知道实际问题在哪里,并且非常感谢那些简单的建议。我在同一个JFrame中尝试了它并且它工作了,然后我在两个JFrame之间尝试了它并且我意识到具有表DID的JFrame不更新表。 repaint()
也没有工作。你真的帮我解决了这个小技巧,这就是我所需要的。谢谢!!!!!!