Domanda

Principiante Java qui. Ho un JFrame che ho aggiunto al mio progetto netbeans e vi ho aggiunto il seguente metodo, che crea una JTable. Il problema è che, per qualche motivo, quando chiamo questo metodo, JTable non viene visualizzato. Qualche suggerimento?

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

Il metodo viene chiamato nel seguente contesto:

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

... dove DBReader.outMatchesTable () è definito come

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

La mia ipotesi è che sto trascurando qualcosa, sia sulle classi swing che sto usando, sia su Java. Qualche idea?

È stato utile?

Soluzione

" questo " nel tuo contesto non è chiaro. È dentro un'applet? un JFrame?

Potresti avere un problema di layout, assicurati di aver chiamato setLayout sulla tua classe con un nuovo borderlayout.

In un'applicazione swing, si desidera utilizzare getRootContentPane (). add () anziché un add () non elaborato, a seconda della versione.

Tutorial Java sull'aggiunta di contenuti di alto livello: http: //java.sun.com/docs/books/tutorial/uiswing/components/toplevel.html

Altri suggerimenti

Se non sei in esecuzione sul thread degli eventi, potrebbe trattarsi di un problema: ho visto che le cose non vengono visualizzate.

Se questo codice viene chiamato in risposta a un evento AWT (clic del mouse, pulsante, ecc.), non è questo il problema, ma se è ancora lo stesso thread che ha avviato la tua app o se questo codice sta per scadere timer, potrebbe benissimo essere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top