动态添加JTable不显示

时间:2008-09-23 15:25:49

标签: java swing netbeans jtable

Java新手在这里。我有一个JFrame,我添加到我的netbeans项目,我已经添加了以下方法,它创建了一个JTable。问题是,由于某种原因,当我调用此方法时,不会显示JTable。有什么建议吗?

public void showFromVectors(Vector colNames, Vector data) {     
    jt = new javax.swing.JTable(data, colNames);
    sp = new javax.swing.JScrollPane(jt);
    //NB: "this" refers to my class DBGridForm, which extends JFrame
    this.add(sp,java.awt.BorderLayout.CENTER);
    this.setSize(640,480);
}

在以下上下文中调用该方法:

DBGridForm gf = new DBGridForm(); //DBGridForm extends JFrame
DBReader.outMatchesTable(gf);
gf.setVisible(true);

...其中DBReader.outMatchesTable()定义为

static public void outMatchesTable(DBGridForm gf) {
    DBReader ddb = new DBReader();
    ddb.readMatchesTable(null);
    gf.showFromVectors(ddb.lastRsltColNames, ddb.lastRsltData);
}

我的猜测是我忽略了一些东西,无论是关于我正在使用的摇摆类,还是关于Java。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

在你的背景下,“这个”还不清楚。它在applet中吗?一个JFrame?

您可能遇到布局问题,请确保您使用新的borderlayout在您的课程上调用了setLayout。

在swing应用程序中,你需要使用getRootContentPane()。add()而不是raw add(),具体取决于版本。

有关添加顶级内容的Java教程:http://java.sun.com/docs/books/tutorial/uiswing/components/toplevel.html

答案 1 :(得分:0)

如果你没有在事件线程上运行,那可能是个问题 - 我已经看到了导致无法显示的内容。

如果响应AWT事件调用此代码(鼠标单击,按下按钮,......)那么这不是问题,但如果它仍然是启动您的应用程序的相同线程,或者此代码正在运行计时器,很可能是。