Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.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
Java添加到表数据问题_Java_Swing_Jtable_Frame - Fatal编程技术网

Java添加到表数据问题

Java添加到表数据问题,java,swing,jtable,frame,Java,Swing,Jtable,Frame,谁能告诉我,我的错在哪里? 我试图用数据填充表,但我不能,总是得到空表。 以下是我的框架代码: import java.util.*; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; public class Rinktis extends JFrame { private final JScrollPane scrollPane = new JScrollP

谁能告诉我,我的错在哪里? 我试图用数据填充表,但我不能,总是得到空表。 以下是我的框架代码:

import java.util.*;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;


public class Rinktis extends JFrame {
    private final JScrollPane scrollPane = new JScrollPane();
    private JTable table;

        public Rinktis() 
        {

        super();
        setBounds(100, 100, 861, 375);      
        try {
            jbInit();
        } catch (Throwable e) {
            e.printStackTrace();
        }       
    }

    Vector<Vector<String>> data1 =new Vector<Vector<String>>(); 
Vector<String> heading1 = new Vector<String>();
    public void tab(Vector heading, Vector data)
    {   System.out.println(data);
        System.out.println(heading);    
        data1=data;
        heading1=heading;
        System.out.println(data1);
        System.out.println(heading1);
    }   
    private void jbInit() throws Exception {
        getContentPane().setLayout(null);
        getContentPane().add(scrollPane);
        scrollPane.setBounds(10, 10, 825, 176);     

        table = new JTable(data1,heading1);
        scrollPane.setViewportView(table);
    }

}
和来自
db.getClients()
I调用
rinktis.tab(列标题,v)

System.out.println
正确地给出了所有数据,但表是空的。

要获得一个系列的答案,您需要发布一个。无论如何,似乎您将错误的类型传递给了JTable

您需要传递对象的2d数组(
object[][]
)或
Vector
而不是普通的1D Vector,与TableHeader相同

我认为问题出在这里:

table = new JTable(data1, heading1); 
      //data1 need to of type Object[][] or Vector<Vector<Object>>
      //heading1 need to of type String[] or Vector<String>  
table=新的JTable(数据1,标题1);
//data1需要为Object[]]或Vector类型
//标题1需要字符串[]或向量类型

这里有一个问题。

问题是表不知道您更改了数据。您可以在创建表时加载数据。然后它会显示得很好(也许先试试这个)。然后在第二步中,您应该直接使用tablemodel并在那里更改数据。无论何时调用,都可以通知表进行更新


或者,如果你已经知道你的标题,你可以设置它,以后只添加数据。这也应该起作用。但是我不建议这样做。

将选项卡功能更改为:

public void tab(Vector heading, Vector data)
    {       
        table.setModel(new DefaultTableModel(data,heading) );
    }   

不,你错了,我可以传递向量而不是2d数组。有一个
JTable
构造函数接受两个
vector
参数。你是对的。但请记住,data1向量应该是一个包含向量的向量。是这样吗?无论如何,如果没有SSCCE或完整的代码,很难判断发生了什么。我做了一些更改,但同样的问题是没有从
db.getClients()添加数据对于JTable,我认为没有其他三种状态1)你真的忘记了2)对你来说非常糟糕的一天是今天,因为没有人会为你安排工作3)你必须将问题分成3-4个独立的线程a)关于JDBC,b)如何将结果集传递给TableModel,c)如何安排经理工作d)如何编制works@camickr不过我认为你的答案更好,因为它有关于这个问题的额外信息,所以我会投票:)
public void tab(Vector heading, Vector data)
    {       
        table.setModel(new DefaultTableModel(data,heading) );
    }