2013-02-15 17 views
6

Ich habe eine Tabelle, die ich ausfüllen möchte, wenn der Benutzer mich dazu auffordert. Das Problem ist, ich kann nicht vorhersehen, wie viele Zeilen die Tabelle am Ende haben wird. Im Konstruktor für meine Platte, wo der Tisch habe ichJTable JScrollPane dynamisch hinzufügen

// add empty scrollPane to JPanel which will later hold table 
       scrollPane = new JScrollPane(); 
    add(scrollPane); 

angezeigt wird enthält diese Klasse eine Methode, die aufgerufen wird, wenn ich schließlich will, um die Tabelle anzuzeigen

public void displayTable(String[] columnNames, String[][] dataValues) 
{ 
    table = new JTable(dataValues, columnNames); 
    table.setPreferredScrollableViewportSize(new Dimension(300, 80)); 
    table.setFillsViewportHeight(true); 
    scrollPane.add(table); 

    this.setVisible(true); 
    scrollPane.repaint(); 

} 

Problem ist, die Tabelle wird nie angezeigt. Ich sehe nur einen Überblick darüber, wo sich die ScrollPane ohne Tisch befindet. Warum wird die Tabelle nicht angezeigt und wie kann ich sie beheben?

+0

Um eine schnellere Hilfe zu erhalten, fügen Sie bitte eine [SSCCE] (http://sscce.org) bei. – mre

+0

Ich dachte, das war kurz und auf den Punkt. War meine Frage nicht klar? – Matt

+0

Es gibt viele Nuancen, wenn es um Swing geht. Je mehr Informationen Sie uns geben, desto einfacher können wir Ihnen helfen. Ansonsten bleiben wir alle im Dunkeln stehen, obwohl wir manchmal Glück haben. – mre

Antwort

15

Sie sollten Komponente nicht zu JScrollPane hinzufügen, aber seine JViewport:

scrollPane.getViewport().add (table); 
+0

Das war es. Vielen Dank! – Matt

+1

Alternativ könnten Sie 'JViewport.setView (Component)' verwenden, aber es wird das gleiche tun. – MadProgrammer

+0

Das hat wie Charme funktioniert. Was ich gemacht habe, war scrollPane.add (Tabelle), das hat es gelöst. – yuva

5

Statt zum JScrollPane ein Ansichtsfenster von scrollpane erstellen Tabelle um und setzt dann seine Ansicht als Tabelle. mit folgendem Code statt:
scrollPane.setViewportView(table)

2

Im Allgemeinen erstellen Sie die JTable und die JScrollPane zusammen, auch wenn Sie noch keine Werte haben.

Es ist besser, einen DefaultTableModel oder einen TableModel zu verwenden, den Sie für eine dynamische Tabelle erweitern.

+0

+1 für richtigen Weg und richtige Antwort, – mKorbel

Verwandte Themen