mehrere Tabellen in einem ScrollPane

Biergamasda

Erfahrenes Mitglied
Hi Leute, hab da ein Problem.

Und zwar möchte ich mehrere Tabellen in einer ScrollPane anzeigen. Mein Problem ist jetzt, dass ich meines wissens dem ScrollPane direkt nur ein Element als "Client" geben kann. Deshalb hab ich ein JPanel gemacht, welchem ich per GridBagLayout mehrere Tabellen hinzufüge. (atm 2)
Wenn ich das ganze jetzt ausführe und ansehe stelle ich fest, dass die Tabellen ordnungsgemäß angezeigt werden, jedoch die ColumnNames nich angezeigt werden. Dies geschieht jedoch nur dann, wenn ich die Tabellen in dem JPanel unterbringe....
Hoffe mir kann da jemand helfen :D

Und noch bissl source...
Java:
private JPanel getPKalkFormate() {
        if (pKalkFormate == null) {
            pKalkFormate = new JPanel();
            pKalkFormate.setLayout(new GridBagLayout());
            
            GridBagConstraints c = new GridBagConstraints();
            c.insets = new Insets(1,1,1,1);
            
            c.gridy = 0;
            c.gridx = 0;            
            
            //Tabellen anlegen
                                
            JPanel contentPane = new JPanel();
            contentPane.setLayout(new GridBagLayout());
            GridBagConstraints c1 = new GridBagConstraints();
            c1.insets = new Insets(15,15,15,15);
            c1.gridx = 0;
            c1.gridy = 0;
            JTable tKalkFormateBasis = new JTable(new ABM_KalkModelBasis(DbCon.getAbmBasisDat(1)));            
            contentPane.add(tKalkFormateBasis,c1);
            c1.gridx = 0;
            c1.gridy = 1;
            JTable tKalkFormate = new JTable(new ABM_KalkModel(DbCon.getAbmBasisDat(1)));
            tKalkFormate.addMouseListener(new BasisDatTableMenuContextMenu("basisKalkTab",tKalkFormate));
            contentPane.add(tKalkFormate,c1);
            //scrollPane anlegen
            JScrollPane spKalkFormate = new JScrollPane(contentPane);
            pKalkFormate.add(spKalkFormate,c);
            
                
        }
        return pKalkFormate;
    }

Vielen Dank schon im Voraus...

glg
 
Hi,

das Problem liegt darin, dass ein JTable (warum auch immer) nur dann den TableHeader anzeigt, wenn sich die Tabelle direkt in einer ScrollPane befindet. Das bedeutet, dass du einfach für die beiden Tables je eine ScrollPane per new JScrollPane(comp,JScrollPane.VERTICAL_SCROLLBAR_NEVER,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); erzeugen müsstest und diese dann zum Panel hinzufügen musst.

Allerdings frage ich mich, wie du das Panel scrollen willst, den standardmäßig lässt sich ein JPanel nicht scrollen (auch wenne es in der ScrollPane angezeigt wird).

Gruß

taouri
 
Und welche Möglichkeiten gäbe es sonst noch dies zu verwirklichen?

es sollten 3 Tabellen übereinander und diese beliebig oft nebeneinander angezeigt werden.

Hab sowas noch nie gemacht, dachte mir nur dass das ne Möglichkeit währe... scheinbar jedoch keine allzu gute Idee.... :D

Danke für die Infos :D
 
Moin!
Hm, mir fällt auch keine wirklich intelligente Lösung für dein Problem ein.
Ich glaube in Ermangelung von Alternativen würde ich es genauso machen wir du, mit 2 Unterschieden:
Zum einen würde ich mir eine eigene Panel Klasse basteln, welche das Scrollable Interface implemtiert. Dadurch wird sie nämlich scrollbar.
Zum anderen würde ich die Tabellenheader separat in dieses Panel einfuegen. Mit table.getJTableHeader() bekommst du Zugriff darauf..
Und dann schließlich alles in das ScrollPane.

Eine andere Möglichkeit wäre vielleicht eine eigene JScrollPane Klasse zu schreiben. Dann hast du nämlich Zugriff auf den Column- und RowHeader, der in der JScrollPane angezeigt werden sollen. Diese könntest du dir dann aus deinen einzelnen JTables zusammenbasteln..

Beide Möglichkeiten finde ich nicht sonderlich prickelnd, aber wenn niemand was bessers weis...

*grüssle*
MeinerEiner
 
Hmm, versteh jetzt nicht ganz was du meinst...

Das ganze befindet sich in nem TabbedPane mit Panels. Wenn ich jetzt das Panel Scrollable mache, dann kann ich mal das komplette Panel scrollen - soweit klar. Nur... wozu benötige ich dann die Scrollpanes bei den Tabellen, wenn ich die Header manuell einfüge sollten diese doch auch ohne ScrollPane angezeigt werden?

Ich werds mal weiterversuchen, vieleicht komm ich inzwischen ja dahinter :)

glg me
 
Zurück