Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对象填充的javajtable向量_Java_Swing_Vector_Jtable_Defaulttablemodel - Fatal编程技术网

对象填充的javajtable向量

对象填充的javajtable向量,java,swing,vector,jtable,defaulttablemodel,Java,Swing,Vector,Jtable,Defaulttablemodel,大约三天来,我一直在尝试填充JTable。我所需要做的就是用“Artikel”对象填充向量向量向量,填充头向量并将这两个向量绑定到JTable 我可以使用自定义的AbstractTableModel来管理这一点,但无法创建addColumn()方法。所以,我就这样放弃了。现在我只使用标准的DefaultTableModel,但现在我无法正确填充JTable。我在第一列中获取所有对象,而不是分离到所有列: 我的Artikel课程: public class Artikel { private

大约三天来,我一直在尝试填充JTable。我所需要做的就是用“Artikel”对象填充向量向量向量,填充头向量并将这两个向量绑定到JTable

我可以使用自定义的AbstractTableModel来管理这一点,但无法创建addColumn()方法。所以,我就这样放弃了。现在我只使用标准的DefaultTableModel,但现在我无法正确填充JTable。我在第一列中获取所有对象,而不是分离到所有列:

我的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);
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){
ICsvBeanReader infle=null;
字符串[]头={};
矢量数据=零;
试一试{
infle=新的CsvBeanReader(新的文件阅读器(“C:\\60966192007102211.csv”)、CsvPreference.STANDARD_首选项);
header=infle.getHeader(true);
数据=新向量();
Artikel Artikel;
while((artikel=infle.read(artikel.class,header,cellProcessor))!=null){
向量tmpVector=新向量();
tmpVector.addElement(artikel);
数据补遗(tmpVector);
}
}捕获(例外情况除外){
System.out.println(“FOUT:+ex.toString());
}最后{
试一试{
infle.close();
}捕获(IOEX异常){
Logger.getLogger(main.class.getName()).log(Level.SEVERE,null,ex);
}
}
setModel(新的DefaultTableModel(数据,新的向量(Arrays.asList(header)));
tblAll.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
}

你能告诉我我做错了什么,或者指导我正确的方法吗?非常感谢您的帮助。

向量向量向量中的每个元素表示一行,这些元素向量中的每个元素表示一列

您正在向主向量添加一个元素向量,并且该元素是尚未实现
toString
方法的类的对象


您可能走错了方向。

要更快获得更好的帮助,请发布一个。CSV数据的硬代码值。注意:不应在EDT上执行可能长时间运行的任务(文件I/O、数据库访问…)。GUI更新只能在EDT上进行。这段代码似乎将两者混为一谈。有关更多详细信息,请参阅。@AndrewThompson:我不确定我是否同意你最后的评论。这表明没有足够的
toString()
覆盖,但数组没有覆盖。在我看来,您没有正确填充DefaultTableModel。您正在添加Artikel,而您应该独立地添加每列的每个值。无论如何,如果您扩展
AbstractTableModel
并依赖于您
Vector
@AndrewThompson,这会容易得多:您关于“Swing中的并发性”的建议是我想的,但我不知道它是什么/如何的,谢谢;)谢谢大家的回复,伙计们!现在我开始明白我做错了什么。我刚刚在“Artikel”类中实现了toString方法,如下所示:
@Override public String toString(){return enitivativeref+“”+Brand+“”+pnb;}
结果仍然显示在第一列中,但这次每个对象的值作为一行附加到gether中:。我知道这种行为是很正常的,因为我执行了toString命令。你能给我一个例子,使用DefaultTableModel独立地添加每列的每个值吗?这个问题是通过使用向量中的对象而不是向量中的向量来解决的。因此,将
矢量数据
更改为
矢量数据
。我现在还可以使用标准的自定义AbstractTableModel做任何我想做的事情。如果您想在JTabel(更新记录,添加列..)中进行更改,技巧是先更新向量,然后更新模型。感谢大家的回复,让我想到了更新JTable的正确方法。