Pregunta

Novato de Java aquí.Tengo un JFrame que agregué a mi proyecto netbeans y le agregué el siguiente método, que crea una JTable.El problema es que, por alguna razón, cuando llamo a este método, no se muestra JTable.¿Alguna sugerencia?

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

El método se llama en el siguiente contexto:

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

...donde DBReader.outMatchesTable() se define como

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

Supongo que estoy pasando por alto algo, ya sea sobre las clases de swing que estoy usando o sobre Java.¿Algunas ideas?

¿Fue útil?

Solución

"esto" en su contexto no está claro.¿Está dentro de un subprograma?¿Un marco J?

Es posible que tengas un problema de diseño, asegúrate de haber llamado a setLayout en tu clase con un nuevo diseño de borde.

En una aplicación swing, querrás usar getRootContentPane().add() en lugar de un add() sin formato, dependiendo de la versión.

Tutorial de Java sobre cómo agregar contenido de nivel superior: http://java.sun.com/docs/books/tutorial/uiswing/components/toplevel.html

Otros consejos

Si no está ejecutando el hilo del evento, podría ser un problema; he visto que eso hace que algunas cosas no se muestren.

Si este código se llama en respuesta a un evento AWT (clic del mouse, presión de un botón, ...), entonces ese no es el problema, pero si sigue siendo el mismo hilo que inició su aplicación, o este código se está ejecutando con un temporizador, podría muy bien estar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top