我已经尝试填充 JTable 大约三天了。我需要做的就是用“Artikel”对象填充一个 vector vector ,填充一个标题 vector 并将这两个 vector 绑定(bind)到一个 JTable。
我可以使用自定义 AbstractTableModel 来管理它,但我无法创建 addColumn() 方法。所以,我放弃了这种方式。现在我只使用标准的 DefaultTableModel 但现在我无法正确填充我的 JTable。我将所有对象放在第一列中,而不是分成所有列: fault screenshot
我的 Artikel 类:
public class Artikel {
private String EnitiativeRef;
private String Brand;
private String pnb;
.
.
.
public Artikel(){
}
public String getEnitiativeRef() {
return EnitiativeRef;
}
public void setEnitiativeRef(String EnitiativeRef) {
this.EnitiativeRef = EnitiativeRef;
}
.
.
.
}
我的按钮代码:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
ICsvBeanReader inFile = null;
String[] header = {};
Vector<Vector<Artikel>> data = null;
try {
inFile = new CsvBeanReader(new FileReader("C:\\609661920071022111.csv"), CsvPreference.STANDARD_PREFERENCE);
header = inFile.getHeader(true);
data = new Vector<Vector<Artikel>>();
Artikel artikel;
while ((artikel = inFile.read(Artikel.class, header, cellProcessor)) != null) {
Vector<Artikel> tmpVector = new Vector<Artikel>();
tmpVector.addElement(artikel);
data.addElement(tmpVector);
}
} catch (Exception ex) {
System.out.println("FOUT: " + ex.toString());
} finally {
try {
inFile.close();
} catch (IOException ex) {
Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);
}
}
tblAll.setModel(new DefaultTableModel(data, new Vector(Arrays.asList(header))));
tblAll.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
}
你能告诉我我做错了什么或指导我做这件事的正确方法吗?非常感谢您的帮助。
最佳答案
vector vector 中的每个元素代表一行,这些元素 vector 中的每个元素代表一列。
您正在将单元素 vector 添加到主 vector ,该元素是您尚未为其实现 toString
方法的类的一个对象。
你可能走错了路。
关于带有对象填充的 Java JTable vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13336655/