我创建了一个JTable
并将列标题和数据插入到表中。
data
是向量的向量column_header
是字符串这是代码:
Vector<Diagnosis_data> Arraylist_object = new Vector<Diagnosis_data>();
Vector<Vector<Object>> data = new Vector<Vector<Object>>();
Diagnosis_data d1 = new Diagnosis_data("92992","1",1422-09-09,1422-09-18,E11.9,"Type 2 diabetes mellitus without complications");
Diagnosis_data d2 = new Diagnosis_data("8199111","2",1415-09-09,1415-09-18,E11.622,"Type 2 diabetes mellitus with other skin ulcer");
Arraylist_object.add(d1);
Arraylist_object.add(d2);
int f = 0;
while(f < Arraylist_object.size())
{
Vector<Object> vector = new Vector<Object>();
for(; f < Arraylist_object.size() ; f++)
{
vector.add(Arraylist_object.get(f).patient_ID);
vector.add(Arraylist_object.get(f).Ad_ID);
vector.add(Arraylist_object.get(f).Ad_start);
vector.add(Arraylist_object.get(f).Ad_End);
vector.add(Arraylist_object.get(f).Diagnosis_code);
vector.add(Arraylist_object.get(f).Diagnosis_Des);
data.add(vector);
}
}
DefaultTableModel tableModel = new DefaultTableModel(data,column_header);
JTable table_2 = new JTable(tableModel);
JScrollPane scrollPane = new JScrollPane(table_2);
scrollPane.setBounds(1, 1, 1050, 500);
panel_1.add(scrollPane);
结果是:
答案 0 :(得分:2)
您发布的代码正在使用正确的数据 - 问题必须是数据。使用调试器进行检查,或仅用于测试,打印出data
。
可能同一个Vector被多次添加到data
或每个Vector的内容相同(也许Patient对象使用static
个字段?)
注意:我用来测试你的代码的数据 - 必须为每一行创建一个新的Vector:
Vector<Vector<?>> data = new Vector<>();
Vector<String> column_header = new Vector<>();
column_header.addAll(Arrays.asList("A", "B", "C"));
Vector<String> row;
row = new Vector<>();
row.addAll(Arrays.asList("11", "12", "13"));
data.add(row);
row = new Vector<>();
row.addAll(Arrays.asList("21", "22", "23"));
data.add(row);
row = new Vector<>();
row.addAll(Arrays.asList("31", "32", "33"));
data.add(row);
编辑:添加生成data
代码后,很明显问题是,正如我上面所怀疑的那样:“正在添加相同的Vector”。
看看这部分:
Vector<Object> vector = new Vector<Object>();
for(; f < Arraylist_object.size() ; f++)
{
vector.add(...);
data.add(vector);
}
vector
仅在循环外部创建一次,但在循环内多次添加。
解决方案:在循环中创建矢量
并且不需要额外的while
,实际上约定是在for
循环中声明变量(并使用i
作为计数器):
for(int i = 0; i < Arraylist_object.size() ; i++)
{
Vector<Object> vector = new Vector<Object>();
vector.add(Arraylist_object.get(i).patient_ID);
...
data.add(vector);
}
或使用foreach
:
for (Diagnosis_data diagnosis : Arraylist_object)
{
Vector<Object> vector = ...
vector.add(diagnosis.patient_ID);
vector.add(diagnosis.Ad_ID);
...
}
建议:花一些时间学习使用调试器,如果你想做严肃的编程就不会浪费。
建议2 :正如Andrew Thompson评论的那样,使用LayoutManager
而不是使用常量坐标来布局组件。教程:Laying Out Components Within a Container