Java – Dynamically added JTable not displaying

javajtablenetbeansswing

Java Newbie here. I have a JFrame that I added to my netbeans project, and I've added the following method to it, which creates a JTable. Problem is, for some reason when I call this method, the JTable isn't displayed. Any suggestions?

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

The method is called in the following context:

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

… where DBReader.outMatchesTable() is defined as

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

My guess is I'm overlooking something, either about the swing classes I'm using, or about Java. Any ideas?

Best Solution

"this" in your context is unclear. Is it inside an applet? a JFrame?

You may be having a layout issue, make sure you've called setLayout on your class with a new borderlayout.

In a swing application, you'd want to use getRootContentPane().add() instead of a raw add(), depending on the version.

Java tutorial on adding top-level content: http://java.sun.com/docs/books/tutorial/uiswing/components/toplevel.html

Related Question