我无法弄清楚这一点(过去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但我仍然找不到我错的地方......有人可以给小费吗?
答案 0 :(得分:1)
首先学习和使用Java命名约定:
类名称应该以大写字符开头。你能告诉我JDK中的一个课吗?
方法不应该以大写字母开头。再次,你能告诉我JDK中的一个方法吗?
通过示例学习,不要自己制定约定。
所以System.out.println(list.get(i).exam);将显示我键入的正确内容
我不知道这是怎么回事。您的代码如下:
a)首先,从“listExams()方法中检索ArrayList。
awk -v first="$first" last="$last" '$1 != last || $2 != first {
for (i=1; i<=n; ++i) print a[i] >>"tempfile"; p=1; split("", a); }
# No match yet, remember this line for later
!p { a[++n] = $0; next }
# If we get through to here, there was a match
p { print >>"tempfile" }
END { if (!p) { print "no match" >"/dev/stderr"; exit 1 } }' filename
b)但是在“listExams()”方法中,你要做的就是创建一个空的ArrayList。
ArrayList<exams> list = ListExams();
因此,您缺少实际将数据添加到ArrayList的逻辑。
根据提供的逻辑,您甚至不需要ArrayList。只需从Examination类中获取数据并将其添加到TableModel:
ArrayList<exams> list = new ArrayList<exams>();
对于不同的解决方案,您可以创建自定义TableModel来保存“Exam”对象。查看Row Table Model以获取如何完成此操作的分步示例。
答案 1 :(得分:-1)
好吧,我解决了,即使这只是一个解决方法,我也会接受它。
我所做的就是使用this.setVisible(false)
,然后在另一个JFrame中输入信息。单击添加,我创建第一个JFrame的对象,传递所有变量,使用this.dispose()
然后调用.setVisible(true)
返回到显示信息的表。 LOL是一个长期测试和重写代码,实际上实现它是一个小...
对不起,我不知道实际问题在哪里,并且非常感谢那些简单的建议 camickr 。我在同一个JFrame中尝试了它并且它工作了,然后我在两个JFrame之间尝试了它并且我意识到具有表DID的JFrame不更新表。 repaint()
也没有用。你真的帮我解决了这个小技巧,这就是我所需要的。致谢!!!!!!