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) );
}