Swing Panel mit ScrollBar

AleexQo

Mitglied
Hey Leute,

ich habe ein Panel als Hintergrund. Darauf will ich ein weiteres Panel mit FlowLayout platzieren, welches mehrere JButtons enthält (Beispielsweise 10). Das Panel soll jedoch nur 4 oder 5 Knöpfe anzeigen und um die restlichen sehen zu können, soll man nach rechts scrollen können.
Meine Ideen:
1. Ich wollte dem Panel mit den JButtons einfach eine ScrollBar hinzufügen, leider hat das nicht funktioniert.
2. Ich habe ein JScrollPane erzeugt und diesem mein ButtonPanel hinzugefügt. Daraufhin hat mein JFrame aber nur meinen Hintergrund angezeigt.

Habt ihr eine Lösung?

Danke euch schon mal im voraus:D
 

AleexQo

Mitglied
Wenn ich dem Panel eine Größe setze, dann passiert gar nichts.
Wenn ich jFrame.pack() aufrufe erscheint eine große weiße Fläche.
 

AleexQo

Mitglied
mit jScrollPane.add(thePanel) (falsch)
oder jScrollPane.setViewportView(thePanel); (richtig)

Hab das so gemacht:
JScrollPane startScrollPane1 = new JScrollPane(startPanel1);
und dann nochmal:
startScrollPane1.add(startPanel1);

Habe das nun so gemacht, wie du es mir gesagt hast.
Danke! Es funktioniert. Jedoch nicht mit einer ScrollBar, sondern das FlowLayout des Panels schiebt die Buttons einfach in die nächste Zeile.
Wie schaffe ich es, die Buttons alle neben einander anzuordnen, ohne dass das FlowLayout diese in die nächste Zeile schiebt und diese mit Hilfe einer Scrollbar durchzuscrollen.
 
Zuletzt bearbeitet:

Harry Kane

Top Contributor
Zeig mal mehr Code.
Das hier funklioniert wie erwartet. Die JButtons werden in einer Zeile angeordnet, und man kann mit den JScrollBars die Zeile entlang scrollen.
Java:
package javaforum;
import javax.swing.*;

public class FlowLayoutInJScrollPane {

    public static void main(String[] args){
        JFrame f = new JFrame();
        JPanel p = new JPanel();
        for(int i = 0; i < 60; i++){
            p.add(new JButton("Dies ist Button " + i));
        }
        JScrollPane jsp = new JScrollPane(p);
        f.getContentPane().add(jsp);
        f.pack();
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}
 

AleexQo

Mitglied
Das hier funklioniert wie erwartet.

Ich zeige dir gerne mehr Code, aber das Problem, das ich habe liegt daran dass ich die ScrollPane (welche das Panel mit den Buttons enthält), einem anderen Panel hinzufüge und nicht dem JFrame.

Ich habe ein JFrame in dem ich mit einem CardLayout zwischen Panels wechseln kann und auf einem von diesen Panels ist ein JLabel und dann soll die JScrollPane kommen.
Ich bekomme eine Scrollbare anzeige der Knöpfe auch hin, aber nicht wenn ich die ScrollPane einem Panel adde.

Java:
    JFrame jf = new JFrame("Projekt");
    CardLayout cardLay = new CardLayout();
    JPanel panelMain = new JPanel(cardLay);
    JPanel panels [] = new JPanel[5];
    JButton start = new JButton("Str");
    JButton suche = new JButton("Srch");
    JButton playlists = new JButton("PL");
    JButton meinProfil = new JButton("MP");
    JButton aboFr = new JButton("A & F");
    JButton startBtns1 [] = new JButton[10];
    Dimension dim = new Dimension (325, 475);
    Color co = new Color(205, 133, 63);
   
    public DasFrame() {

        jf.setTitle("Projekt");

        jf.setVisible(true);
        jf.setSize(325, 475);
        jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        jf.setLocationRelativeTo(null);
        jf.setResizable(true);
        jf.setLayout(new BorderLayout());
       
        // Panel mit den Buttons erstellen
        JPanel panelBtn = new JPanel(new FlowLayout());
        panelBtn.add(start);
        panelBtn.add(suche);
        panelBtn.add(playlists);
        panelBtn.add(meinProfil);
        panelBtn.add(aboFr);
        jf.add(panelBtn, BorderLayout.SOUTH);
       
        //panel mit cardLayout hinzufügen
        jf.add(panelMain);
       
       
        //btns panelwechsel
        start.addActionListener((ActionEvent e) -> cardLay.first(panelMain));
        suche.addActionListener((ActionEvent e) -> cardLay.next(panelMain));
        playlists.addActionListener((ActionEvent e) -> cardLay.next(panelMain));
        meinProfil.addActionListener((ActionEvent e) -> cardLay.previous(panelMain));
        aboFr.addActionListener((ActionEvent e) -> cardLay.previous(panelMain));
       
        //panels für das CardLayout
        for(int i=0;i<5;i++){
            panels[i] = new JPanel();
            panels[i].setBackground(co);
            panels[i].setPreferredSize(dim);
            panelMain.add(panels[i]);
        }
       
        //erstes Label für die Startseite (panels[0])
        JLabel startLabels[] = new JLabel[3];
        startLabels[0] = new JLabel("Diese Woche angesagt:\n");
        startLabels[0].setPreferredSize(new Dimension(200, 55));
        Font schrift = (startLabels[0].getFont().deriveFont(Font.PLAIN, 50));
        startLabels[0].setForeground(Color.WHITE);
        panels[0].add(startLabels[0]);
       
        //erstes Panel für die Startseite
        JPanel startPanels[] = new JPanel[3];
        startPanels[0] = new JPanel();
        startPanels[0].setLayout(new FlowLayout());
        startPanels[0].setBackground(co);
        startPanels[0].setPreferredSize(new Dimension(100, 60));
       
        //scrollpane fürs panel
        JScrollPane jspStart[] = new JScrollPane[3];
        jspStart[0] = new JScrollPane();
        jspStart[0].setBackground(co);
        jspStart[0].setPreferredSize(new Dimension(100,60));
        jspStart[0].setPreferredSize(dim);
        jspStart[0].setHorizontalScrollBarPolicy
                (JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
       
       
       
       
        //knöpfe für das erste Panel
        for(int i=0;i<10;i++){
            startBtns1[i] = new JButton(i + ".");
            startBtns1[i].setPreferredSize(new Dimension(50, 50));
            startPanels[0].add(startBtns1[i]);
        }
       
        //panels dem jFrame adden
        jspStart[0].setViewportView(startPanels[0]);
        panels[0].add(jspStart[0]);
       
       
//        jspStart[0].setBorder(null);
       
       
//        jf.repaint();
        jf.pack();
        jf.setVisible(true);
 

AleexQo

Mitglied
Okay, ich habe nun die Lösung.
Es funktioniert nicht, wenn das JPanel, welchem ich die JScrollPane hinzufüge, ein FlowLayout besitzt.
Wählt man stattdessen ein GridLayout, funktioniert es.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
CptK Ordentlicher Code & Panel ab bestimmter Komponentenzahl scrollbar machen AWT, Swing, JavaFX & SWT 12
B Export eines Panel mit ScrollBar AWT, Swing, JavaFX & SWT 4
D Swing [Erledigt]Panel mit ScrollBar , anpassbare Größe AWT, Swing, JavaFX & SWT 15
L paintComponent in Panel eines Borderlayouts hinzufügen AWT, Swing, JavaFX & SWT 3
A Problem Spiel auf Panel der GUI zu bringen AWT, Swing, JavaFX & SWT 1
B JTextField in Panel positionieren AWT, Swing, JavaFX & SWT 1
R Swing Panel nur bei Maus sichtbar AWT, Swing, JavaFX & SWT 2
B mit Maus verschiebbares Panel AWT, Swing, JavaFX & SWT 2
S Labels in Panel erstellen AWT, Swing, JavaFX & SWT 1
H Aus Array Container Panel an Tabbedpane zuweisen AWT, Swing, JavaFX & SWT 29
S Swing Panel wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 3
O Kann kei neues Panel zum zeichnen aufrufen... AWT, Swing, JavaFX & SWT 4
J Overlay Panel statt neues Fenster AWT, Swing, JavaFX & SWT 6
CptK Swing DropdownMenu über Panel-Grenzen hinaus anzeigen AWT, Swing, JavaFX & SWT 1
J Aufklappbares Panel in Toolbar AWT, Swing, JavaFX & SWT 6
L ActionListener zu Button in Panel hinzufügen AWT, Swing, JavaFX & SWT 10
S Swing Panel übernimmt komponenten von anderem AWT, Swing, JavaFX & SWT 7
J Panel auf Frame positionieren AWT, Swing, JavaFX & SWT 9
J JFrame Panel hinzufügen AWT, Swing, JavaFX & SWT 10
B AWT Panel größe im BorderLayout einstellen AWT, Swing, JavaFX & SWT 1
K Swing Entfernen von Panel funktioniert nicht AWT, Swing, JavaFX & SWT 5
L JavaFX Animation für Panel wechsel AWT, Swing, JavaFX & SWT 3
L Swing JTable im Panel darstellen AWT, Swing, JavaFX & SWT 8
L JavaFX Klickverhalten bei einem Panel AWT, Swing, JavaFX & SWT 1
K Panel verdeckt MenuItem AWT, Swing, JavaFX & SWT 5
H zwei gleich große Panels getrennt durch ein weiteres Panel AWT, Swing, JavaFX & SWT 10
N Swing Label auf Panel legen.. AWT, Swing, JavaFX & SWT 2
J Panel auf Frame löschen und neues Panel Hinzufügen AWT, Swing, JavaFX & SWT 4
T Swing Graphics auf Panel AWT, Swing, JavaFX & SWT 2
B Swing WindowBuilde: Menu -> anderes Panel wechseln AWT, Swing, JavaFX & SWT 1
U Java FX Zusätzliches Label per Knopfdruck während der Laufzeit auf Panel einfügen. AWT, Swing, JavaFX & SWT 2
P AWT Panel überschreibt vorheriges... AWT, Swing, JavaFX & SWT 2
Thallius Swing Warum kann man Texte im Panel nicht markieren? AWT, Swing, JavaFX & SWT 1
S NetBeans, Panel in Frame einfügen AWT, Swing, JavaFX & SWT 3
M AWT Panel wird nicht angezeigt AWT, Swing, JavaFX & SWT 7
P Fenstergröße ändern, Panel soll gleich bleiben AWT, Swing, JavaFX & SWT 2
M JavaFX Slide Panel AWT, Swing, JavaFX & SWT 2
P Swing Panel nicht sichtbar AWT, Swing, JavaFX & SWT 1
M Swing JtextField Panel in ander Panel aufrufen AWT, Swing, JavaFX & SWT 0
M Panel in geerbter JFrame Klasse adden AWT, Swing, JavaFX & SWT 4
S ScrollPane in Textarea und auf Panel AWT, Swing, JavaFX & SWT 4
D Swing Bei Button Click neues Panel laden AWT, Swing, JavaFX & SWT 3
D Panel wird nicht angezeigt und Fragen zum CardLayout AWT, Swing, JavaFX & SWT 6
S Swing JMenu löscht auf panel gezeichnetes AWT, Swing, JavaFX & SWT 3
X Java Panel zeitweise repainten AWT, Swing, JavaFX & SWT 8
X Panel Probleme (Tetris) AWT, Swing, JavaFX & SWT 8
W Swing Nicht-Editierbares Textfeld in Panel in ScrollPane AWT, Swing, JavaFX & SWT 9
B zweidimensionales Buttonarray auf Panel AWT, Swing, JavaFX & SWT 11
F JAVA-EDITOR: Panel in Frame aufnehmen AWT, Swing, JavaFX & SWT 3
F textarea lässt panel verschwinden AWT, Swing, JavaFX & SWT 4
T LayoutManager GridLayout panel.setSize funktioniert nicht AWT, Swing, JavaFX & SWT 1
A Panel lässt sich nicht bewegen AWT, Swing, JavaFX & SWT 2
E Panel mit Leben füllen AWT, Swing, JavaFX & SWT 2
K Swing Maus in Panel einsperren AWT, Swing, JavaFX & SWT 8
D Panel in Panel zentriert nicht richtig AWT, Swing, JavaFX & SWT 3
P Swing Panel-austausch über einen MenuListener AWT, Swing, JavaFX & SWT 2
1 Swing Bestimme ob ein Subelement eines panel den Fokus verloren hat AWT, Swing, JavaFX & SWT 2
P Swing Button über gesamtes Panel AWT, Swing, JavaFX & SWT 2
O LayoutManager Panel in Panel "maximieren" AWT, Swing, JavaFX & SWT 2
C AWT Horizontale Linie in einem Panel AWT, Swing, JavaFX & SWT 12
T Über mehrere Panel zeichnen AWT, Swing, JavaFX & SWT 2
S Größe von Panel verändern welches auf anderem Panel sitzt AWT, Swing, JavaFX & SWT 10
bluerob Panel im BorderLayout South wird nicht angezeigt AWT, Swing, JavaFX & SWT 5
M Swing Panel klassenübergreifend ändern AWT, Swing, JavaFX & SWT 6
M Swing JFrame in einem Panel zeichnen AWT, Swing, JavaFX & SWT 3
A 2D-Grafik Panel inhalt löschen AWT, Swing, JavaFX & SWT 5
H Scroll Panel wird nicht hinzugefügt AWT, Swing, JavaFX & SWT 6
S Elemente im Panel in richtige Ausgangsstellung bringen AWT, Swing, JavaFX & SWT 10
X Swing Panel Extra Klasse & Aufruf über Button AWT, Swing, JavaFX & SWT 18
Kenan89 2D-Grafik paintComponent quetsch alles in Panel AWT, Swing, JavaFX & SWT 26
C Bild auf Panel vergrößern und verschieben AWT, Swing, JavaFX & SWT 4
C ImageIcon eines Labels auf einem Panel in neuem Fenster anzeigen AWT, Swing, JavaFX & SWT 2
H LayoutManager Panel verschieben sich AWT, Swing, JavaFX & SWT 5
O Swing JTree um Label (oder Panel) erweitern AWT, Swing, JavaFX & SWT 9
S Vaadin: Panel AWT, Swing, JavaFX & SWT 10
R paintComponent malt bei repaint() Rahmen um Panel AWT, Swing, JavaFX & SWT 7
C Etwas durchsichtig machen über einem Panel AWT, Swing, JavaFX & SWT 7
K Panel zu Laufzeit ändern AWT, Swing, JavaFX & SWT 6
T eigene Klasse für Panel AWT, Swing, JavaFX & SWT 9
D Panel aus externer Klasse holen AWT, Swing, JavaFX & SWT 2
L Swing dynamisches Image-Panel in Layout einbinden AWT, Swing, JavaFX & SWT 10
T Listener in anderen Panel deaktivieren AWT, Swing, JavaFX & SWT 3
H Verschiedene JPanels aus eigenen Klassen in JFrame einfügen, nur ein Panel sichtbar AWT, Swing, JavaFX & SWT 4
GUI-Programmer Informations-Panel an Label AWT, Swing, JavaFX & SWT 2
U Elemente im Panel zentrieren mit GridLayout AWT, Swing, JavaFX & SWT 3
J JPanel mit anderem Panel aus anderer Klasse setzen AWT, Swing, JavaFX & SWT 4
F 2D-Grafik Panel-Zeichnung erscheint nicht AWT, Swing, JavaFX & SWT 7
S Panel rapaint AWT, Swing, JavaFX & SWT 18
T AffineTransform wirkt sich nur auf dem ersten Panel aus AWT, Swing, JavaFX & SWT 3
K Swing: Panel in Panel erzeugen AWT, Swing, JavaFX & SWT 11
M Panel in SWT einfügen AWT, Swing, JavaFX & SWT 12
T auf Panel zeichnen AWT, Swing, JavaFX & SWT 4
A FormLayout Panel-Breite AWT, Swing, JavaFX & SWT 7
Dit_ "Expandable" Panel ? AWT, Swing, JavaFX & SWT 6
A Panel-Unterklasse funktioniert nicht AWT, Swing, JavaFX & SWT 16
A Panel zu klein AWT, Swing, JavaFX & SWT 14
M Eigenes Panel aus Component? AWT, Swing, JavaFX & SWT 5
S Swing Größe von JLabels verändern sich in einem Panel unterschiedlich AWT, Swing, JavaFX & SWT 6
B Panel als Bild speichern AWT, Swing, JavaFX & SWT 11
V Panel/Icon aktualisieren AWT, Swing, JavaFX & SWT 10

Ähnliche Java Themen

Neue Themen


Oben