Frage

Java Neuling hier. Ich habe einen JFrame, die ich mein NetBeans-Projekt hinzugefügt, und ich habe die folgende Methode hinzugefügt, die eine JTable erstellt. Problem ist, aus irgendeinem Grund, wenn ich diese Methode aufrufen, die JTable wird nicht angezeigt. Irgendwelche Vorschläge?

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

Das Verfahren wird im folgenden Kontext genannt:

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

... wo DBReader.outMatchesTable () als

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

Meine Vermutung ist, dass ich mit Blick auf etwas, entweder über die Swing-Klassen Ich verwende oder über Java. Irgendwelche Ideen?

War es hilfreich?

Lösung

"this" in Ihrem Kontext ist unklar. Ist es in einem Applet? ein JFrame?

Sie können ein Layout Problem werden müssen, stellen Sie sicher, dass Sie setLayout auf Ihre Klasse mit einem neuen Border genannt haben.

In einer Swing-Anwendung, würden Sie wollen getRootContentPane () verwenden. Add () anstelle eines rohen add (), je nach Version.

Java-Tutorial zum Hinzufügen von Top-Level-Inhalt: http: //java.sun.com/docs/books/tutorial/uiswing/components/toplevel.html

Andere Tipps

Wenn Sie nicht auf dem Event Thread ausgeführt werden, könnte es ein Problem sein -. Ive gesehen, dass Ursache Sachen nicht angezeigt werden

Wenn dieser Code in Reaktion auf ein AWT-Ereignis aufgerufen wird (Mausklick, Tastendruck, ...), dann ist das nicht das Problem, aber wenn es immer noch der gleiche Thread ist, dass Ihre App gestartet wird, oder dieser Code ausgeführt wird, ab Timer, könnte sehr gut sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top