2017-08-19 5 views
0

Ich bin ziemlich neu in Java Swing. Kann mir jemand helfen herauszufinden, was ich falsch mache? Bitte korrigieren Sie mich wo nötig. Ein guter Teil dieses Codes war Versuch und Irrtum.JScrollPane scheint nicht zu scrollen

Ich habe einen Rahmen, der ein JPanel enthält. Das JPanel verwendet das Layout "GridBag". Der enthaltene Code dreht sich um das Kind JPanel auf der rechten Seite, wie im Bild zu sehen ist. Aus irgendeinem Grund kann meine vertikale Bildlaufleiste nicht richtig funktionieren.

Hier ist der Code von Interesse:

/// GridBagConstraints 
GridBagConstraints gbc = new GridBagConstraints(); 

// parent jpanel for scrollpane 
scrollPanel = new JPanel(); 
scrollPanel.setLayout(new BorderLayout()); 
gbc.gridx = 1; 
gbc.gridy = 0; 
gbc.weightx = 1.0; 
gbc.weighty = 1.0; 
gbc.fill = GridBagConstraints.BOTH; 
add(scrollPanel, gbc); 

// content jpanel for scrollpane 
scrollPaneContent = new JPanel(); 
scrollPaneContent.setLayout(new GridLayout(0, 1, 0, 1)); 

// scrollPane 
scrollPane = new JScrollPane(); 
scrollPane.setBorder(BorderFactory.createEmptyBorder(0,30,0,0)); 
scrollPane.setViewportView(scrollPaneContent); 
scrollPanel.add(scrollPane, BorderLayout.PAGE_START); 

Und hier ist, was das Programm wie im Moment aussieht. können Sie sehen die Zahlen gehen einfach auf den Bildschirm:

enter image description here

Jede Hilfe wird sehr geschätzt! Vielen Dank.

+0

Um eine bessere Hilfe zu erhalten, geben Sie ein [MCVE] oder [Short, Self Contained, Correct Example] (http://www.sscce.org/) ein. –

Antwort

1
scrollPanel.add(scrollPane, BorderLayout.PAGE_START); 

Sie versuchen, das scrollPane zum scrollPanel hinzuzufügen. So funktioniert es nicht.

A JScrollPane ist ein Container, so müssen Sie die Platte, die die Komponenten auf die Bildlauffenster

JPanel panel = new JPanel(...); 
panel.add(....); 
panel.add(....); 
JScrollPane scrollPane = new JScrollPane(panel); 
frame.add(scrollPane); 

Der obige Code hinzuzufügen, wird das Panel mit dem „Ansichtsfenster“ des Bildlauffensters hinzuzufügen.

+0

Ich füge das scrollPane dem scrollPanel hinzu und verwende scrollPaneContent als Ansichtsfenster für das JScrollPane, wie hier zu sehen ist: scrollPane.setViewportView (scrollPaneContent) ;. Ist das falsch? Vielen Dank. – gab64

+0

@ gab64, 'Ist das falsch?' - Ich habe dir schon gesagt, dass es falsch ist und dir den richtigen Weg gezeigt hat. – camickr

+0

Ich verstehe. Ich habe es jetzt richtig funktioniert, danke. Als eine Alternative habe ich herausgefunden, dass es auch mit: setMinimumSize und setPreferredSize funktioniert, allerdings habe ich versucht, die Größe nicht zu kodieren. Danke noch einmal! – gab64