Panel Scrollbar

Tithilion

Mitglied
Möchte das mein Panel das viele JButtons bekommt scrollbar wird... ohne den Scroller klappt das auch, also alle JButtons werden schön untereinander angezeigt. Doch weiß ich nicht wie ich das panel halt scrollbar machen kann... :confused: ich hoffe einer weiß rat, nun folgt ein kleiner Code-Auszug:

Code:
    GridBagLayout aufLay = new GridBagLayout();
    GridBagConstraints constraints = new GridBagConstraints();
    GridLayout kleineB = new GridLayout(0,1);

    JPanel gesammt = new JPanel();
    JPanel panelLinks = new JPanel();
    JPanel panelRechts = new JPanel();

panelLinks.setLayout(kleineB);
JButton butt[] = new JButton[länge]; 

    for(int i=0; i<länge ;i++){
     if(name.equals((String)"TWINS & AMS")){
        butt[i] = new JButton(""+i);
        butt[i].addActionListener(k);
        panelLinks.add(butt[i]);
     }

    gesammt.setLayout(aufLay);
    JScrollPane scroller = new JScrollPane(panelLinks); 
    gesammt.add(scroller);
    gesammt.add(panelRechts,constraints);
    this.add(gesammt);
    this.setVisible(true);}

Würde mich über hilfe wirklich sehr freuen. :D

//edit: hoffe ich hab alles drin was wichtig ist,

// Edit2: achja das problem:"das JScrollPane bleibt winzig klein, wenn ich aber draufdrück aktiviert sich trotzdem der Actionlistener des JButtons
 
Zuletzt bearbeitet:
naja also kann man die komponenten nicht erst sammeln im panel und das dann dem scrollpane übergeben, richtig?

und, wie könnte ich das dann dort oben gestallten, habs jetzt mal mit
Code:
scroller.add(butt[i]);

probiert. Aber nun ist das feld schwarz O.o?
 
Zuletzt bearbeitet:
Also meine Javaversion hier ist schon etwas älter und da funktioniert das nicht. Probier doch mal aus, alles direkt der JScrollPane zu geben.
 
also ne änderung hats gegeben, das JScrollPane ist nun schwarz, aber immernoch winzig... und eigentlich sollten darauf die Buttons von einer große 80*80 sein...
 
Probier mal dem Panel eine preferredSize zu geben....und wenn man ein Gridbaglayout nimmt sollte man zum hinzufügen immer eine eigene Funktion schreiben (ähnlich wie in "Java ist auch ein Insel" vorgeschlagen

Code:
  static void addComponent( Container cont, 
                            GridBagLayout gbl, 
                            Component c, 
 
                            int x, int y, 
                            int width, int height, 
                            double weightx, double weighty ) 
  { 
    GridBagConstraints gbc = new GridBagConstraints(); 
    gbc.fill = GridBagConstraints.BOTH; 
    gbc.gridx = x; gbc.gridy = y; 
    gbc.gridwidth = width; gbc.gridheight = height; 
    gbc.weightx = weightx; gbc.weighty = weighty; 
    gbl.setConstraints( c, gbc ); 
    cont.add( c );

Wobei du eben die Zeile gbc.fill = GridBagConstraints.BOTH; anpassen kannst je nachdem wie und ob du füllen willst.
Wenn die Buttons einfach nur untereinander stehen sollen würde ich aber auch kein Gridbaglayout nehmen.
Da müsste eigentlich sogar in FlowLayout reichen oder nicht?
 
das GridBagLayout ist für den gesammten Frame, da wo die Buttons angeordnet sind ist nur ein GridLayout mit (0,1), auf der rechten seite ist aber halt noch mehr und daher brauch ich das GridBagLayout..

Das mit der PreferentSize werd ich sofort testen.
 
Zurück