Java添加表数据问题
有人可以告诉我,我的错误在哪里? 我试图用数据填充表,但我不能,总是得到空表。 这是我的框架代码:
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);
}
}
这是我从另一个框架调用它的方法:
protected void rinktisButton_1_actionPerformed(ActionEvent e)
{ Rinktis frame = new Rinktis();
frame.setVisible(true);
try {
db.getClients();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
从 db.getClients();
我调用 rinktis.tab(columnHeads,v);
System.out.println
正确地为我提供了所有数据,但表是空的。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
将选项卡功能更改为如下所示:
change your tab function to be like this:
要获得严肃的答案,您需要发布 SSCCE。无论如何,您似乎将错误的类型传递给 JTable 构造函数。
您需要传递一个 2d 对象数组 (
Object [][]
) 或Vector>
而不是普通的 1D Vector,我认为 与 TableHeader 相同问题是:
这是一个教程。
For a serius answer you need to post an SSCCE. Anyway it seems that you are passing a wrong type to JTable constructor.
You need to pass a 2d array of object (
Object [][]
) orVector<Vector<Object>>
not plain 1D Vector, same as for TableHeaderI think here's the problem :
Here's a tutorial.
问题是该表不知道您更改了数据。您可以在创建表时加载数据。然后它应该会很好地显示(也许可以先尝试一下)。然后,在第二步中,您应该直接使用表模型并更改其中的数据。每当您这样做时,您都可以通知表进行更新。
或者,如果您已经知道标题,则可以设置它并稍后添加数据。这也应该有效。不过我不推荐这样做。
The problem is that the table does not know that you changed the data. You can either load your data on creation of the table. Then it should show up just fine (maybe try this out first). Then in a second step you should work directly with the tablemodel and change data there. Whenever you do so call the you can notify the table to update.
Alternatively, if you already know your header, you can set it and only add the data later. This also should work. However I do not recommend this.