Agrega dinámicamente JTable no mostrar

Java Novato aquí. Tengo un JFrame que he añadido a mi proyecto de netbeans, y he añadido el siguiente método, que crea un JTable. El problema es que, por alguna razón, cuando me llame a este método, el JTable no se muestra. 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);
}

Se llama al método 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);
}

Mi conjetura es que estoy con vistas a algo, ya sea sobre el swing de las clases que estoy usando, o acerca de Java. Alguna idea?

InformationsquelleAutor Graza | 2008-09-23

2 Kommentare

  1. 1

    «este» en su contexto es claro. Es dentro de un applet? un JFrame?

    Usted puede estar teniendo un problema de diseño, asegúrese de que usted ha llamado setLayout en su clase con un nuevo borderlayout.

    En un columpio de la aplicación, es conveniente utilizar getRootContentPane().add() en lugar de un raw add(), dependiendo de la versión.

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

    • «este» se refiere a la DBGridForm, que se extiende JFrame. Pensé que era obvio cuando me dijo que yo (parafraseando) «crea un JFrame con netbeans, y se ha añadido el siguiente método». Parece que no era tan obvio como lo había pensado
    • OK, llamando «este.setLayout(new java.awt.BorderLayout());» antes de añadir el panel de desplazamiento hizo el truco. Creo que el diseño predeterminado añadido por netbeans debe ser algo diferente – esto es realmente la primera vez que he usado netbeans, toda la experiencia anterior que estaba haciendo las cosas desde el principio…
    • Diseño predeterminado es un flowlayout, creo.
  2. 0

    Si no se ejecuta en el subproceso de eventos, podría ser un problema-he visto que causan cosas no mostrar.

    Si este código es llamado en respuesta a una AWT evento (clic del ratón, pulsación de un botón, …), entonces ese no es el problema, pero si sigue siendo el mismo hilo que inició su aplicación, o que este código se ejecuta fuera de un temporizador, podría muy bien estar.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea