JScrollPane

arthemiss

Mitglied
Hallo Leute,

zuerst möchte ich anmerken, dass ich sämtliche Themen schon durchgegangen bin, um unnötige/doppelte Themen zu vermeiden...leider ohne Erfolg.
Ich bin noch ziemlich neu im progarmmieren und komme einfach nicht weiter!

ich habe ein JPanel, welches durch den GridBagLayout strukturiert ist.
in diesem Panel sind Checkboxen enthalten.
die Größe des Panels habe ich mit .setPreferredSize(new Dimension(int,int)) und setMinimumSize(panel.getPreferredSize()) festgelegt.

da nicht alle Checkboxen in meinem Panel sichtbar sind (aufgrund der festgelegten Größe) und ich innerhalb des Panels scrollen möchte, habe ich eine JScrollPane angelegt und ihm mein Panel übergeben.... ohne Erfolg!

sieht selbst:
Java:
panel = new JPanel();

JScrollPane myScrollPane = new JScrollPane(panel);
		myScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
myScrollPane.setViewportView(panel);
		
				
panel.setPreferredSize(new Dimension(100,200));
panel.setMinimumSize(panelWestOben.getPreferredSize());

mainPanel.add(myScrollPane); //adde die JScrollPane im Hauptpanel
mainPanel.add(panel); //adde mein Panel im Hauptpanel

mache ich irgend etwas beim adden falsch?
muss ich die Scrollpane in den Panel adden, den ich ursprünglich der Scrollpane übergeben hatte (sprich panel) oder dem Hauptpanel (mainPanel), der mein eigentliches Panel (panel) enthält?

wenn ich meinen Code ausführe, sieht man mein Panel mit dem übergroßen Inhalt des Panels und mittendrin eine Art "mini Scrollbar", der verschwindet, sobald man mit dem Cursor draufgeht oder die Checkboxen betätigt.

Hilfe!
 
Zuletzt bearbeitet:

Michael...

Top Contributor
Was ist panel und was panelWestOben. Welches soll skrollbar sein?

Die Reihenfolge ist ZuSkrollendeKomponente in die JScrollPane in den Container.
Java:
JPanel scrollablePanel = new JPanel();
scrollablePanel.setPreferredSize(new Dimension(200, 200));
JScrollPane scrollPane = new JScrollPane(scrollablePanel);
container.add(scrollPane);
 

Pepe Rohny

Aktives Mitglied
Hi,

sieh' dir mal die Zeilen 11 und 12 im ursprünglichen code an:
erst fügst du die JScrollPane (die das panel enthält!) in das Hauppanel ein, dann das panel?!?
wenn du die Anweisung in Zeile 12 weglässt sollte es funktionieren

Pepe
 

arthemiss

Mitglied
Hi,
sieh' dir mal die Zeilen 11 und 12 im ursprünglichen code an:
erst fügst du die JScrollPane (die das panel enthält!) in das Hauppanel ein, dann das panel?!?
wenn du die Anweisung in Zeile 12 weglässt sollte es funktionieren
Pepe

wenn ich die Zeile 12 weglasse passiert was ganz Schräges!

ein Bildchen zur Veranschaulichung habe ich mitangehängt...
 

Anhänge

  • guibild.JPG
    guibild.JPG
    14,1 KB · Aufrufe: 33
C

Camino

Gast
Dann musst du wohl nochmal ein bisschen mehr Code zeigen, damit man sagen kann, was da genau passiert. Das mit der Zeile 12 sollte ja nur bedeuten, dass du einmal dein Panel dem Scrollpane gibst, dann das Scrollpane hinzufügst (bis dahin alles richtig) und dann aber nochmal dein Panel hinzufügst, was ja eigentlich schon im Scrollpane liegt. Na ja, wie gesagt, mehr Code, dann sieht man evtl. gleich den Fehler...
 

arthemiss

Mitglied
da mein GUI ziemlich groß ist und im unvollständigen Zustand schon >2000 Zeilen hat, habe ich mich auf das Wesentliche konzentriert...

Java:
	public GuiTest3 () {
						
		super("DB Sales Test");
		getContentPane().setLayout(new BorderLayout());	

                mainPanel = new JPanel();
		GridBagLayout gblWest = new GridBagLayout();
		mainPanel.setLayout(gblWest);
		GridBagConstraints gbcWest  = new GridBagConstraints();
		gbcWest.fill=GridBagConstraints.HORIZONTAL;
		gbcWest.insets = new Insets(0,0,0,0); 	

		gbcWest.gridx=0; //die erste Position 
		gbcWest.gridy=0; //im Hauptpanel
		
		panel = new JPanel(); 
		
		JScrollPane myScrollPane = new JScrollPane(panel );
		  myScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
		myScrollPane.setViewportView(panel);

		
		panel.setPreferredSize(new Dimension(100,200));
		panel.setMinimumSize(panel.getPreferredSize());
		
	  	gblWest.setConstraints(panel, gbcWest);
    panel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(EtchedBorder.RAISED), "Großhändler"));

		GridBagLayout gblWestO = new GridBagLayout();
		panel.setLayout(gblWestO);
		GridBagConstraints gbcWestO  = new GridBagConstraints();
		gbcWestO.fill=GridBagConstraints.HORIZONTAL;
		gbcWestO.insets = new Insets(0,0,0,0);
		

//**********die einzelnen Checkboxen im GridBag**************

		gbcWestO.gridx=0; 
		gbcWestO.gridy=0;
		midgard = new JCheckBox("Midgard");
		gblWestO.setConstraints(midgard, gbcWestO);
		
		gbcWestO.gridx=1; 
		gbcWestO.gridy=0;
		terra = new JCheckBox("Terra");
		gblWestO.setConstraints(terra, gbcWestO);
		
		gbcWestO.gridx=0; 
		gbcWestO.gridy=1;
		biogarten = new JCheckBox("Biogarten");
		gblWestO.setConstraints(biogarten, gbcWestO);
		//.....die Restlichen hab ich mal rausgenommen
						
		panel.add(terra);
		panel.add(midgard);
		panel.add(biogarten);
		//....auch hier die Restlichen weggelassen

                gblWest.setConstraints(panel, gbcWest);		
	
		mainPanel.add(myScrollPane);

                getContentPane().add(mainPanel, BorderLayout.WEST);

            pack();
	    setSize(1250,700);
	    setVisible(true);
	    setResizable(false);
	    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	  
				
	}
 
Zuletzt bearbeitet:

Pepe Rohny

Aktives Mitglied
ich habe den code nur mal kurz überflogen - aber in Zeile 9 setzt du GridBagLayout als Layout und fügst in Zeile 61 eine Komponente hinzu ohne das Layout bzw. die Constraints zu berücksichtigen
 
C

Camino

Gast
Hmm, mehr als 2000 Zeilen? Das ist wirklich etwas viel. Ich würde das ja aufteilen, also z.B. manche Panel als eigene Klassen anlegen. Es ist jedenfalls einfacher und weniger fehleranfällig, wenn das ganze übersichtlicher strukturiert ist.

Ich würde auch bei der Reihenfolge aufpassen, also erst das Panel fertig zusammenstellen und danach dann erst zum Scrollpane und das dann dem Mainpanel hinzufügen.

Für das GridBagLayout hatte ich mal eine Methode gefunden, mit der man ziemlich einfach Komponenten hinzufügen kann. So ähnlich wie hier: http://www.java-forum.org/java-basics-anfaenger-themen/30926-gridbaglayout.html
Ich hab das dann noch ein bisschen verfeinert und eine eigene Klasse erstellt, die von JPanel abgeleitet ist und diese Methode hat. Dann muss ich nur noch in meinem Hauptpanel ein Objekt dieser Klasse erzeugen und die Komponenten hinzufügen.
 

arthemiss

Mitglied
ich habe den code nur mal kurz überflogen - aber in Zeile 9 setzt du GridBagLayout als Layout und fügst in Zeile 61 eine Komponente hinzu ohne das Layout bzw. die Constraints zu berücksichtigen

stimmt... habs jetzt abgeändert.
in Zeilen 14 und 15 gebe ich ja die position meines zu scrollenden Panels an, 0.0 also erste position, also ganz oben.

und in Zeile 60 habe ich jetzt die Constraints... aber das hat am Ergebnis nichts geändert.
 
C

Camino

Gast
Irgendwie hast du da einen Fehler im Aufbau mit dem GridBagLayout bzw. den GridBagConstraints. Schau dir mal dieses Beispiel an:
JAVA-Doku Layoutmanager - GridBagLayout

Dort gibt es nur 1 Objekt GridBagLayout und 1 Objekt GridBagConstraints. Die Constraints werden festgelegt und direkt danach wird die Komponente dem Panel/GBL hinzugefügt. Dann wieder die Constrints gesetzt und die Komponente hinzugefügt, usw.

Oder wenn du ziemlich viele Komponenten dem GridBagLayout hinzufügen möchtest, dann empfiehlt sich das mit der Methode, welche ich weiter oben genannt hatte. Finde ich jedenfalls übersichtlicher...
 

arthemiss

Mitglied
vielen lieben Dank für Eure Hilfeleistungen Camino und Pepe!
werde dann mal mit Euren Vorschlägen ein bisschen rumspielen, melde mich bestimmt wieder!

hasta luego
 
C

Camino

Gast
@Camino: ich werde versuchen, deine Vorschläge umzusetzen...nachdem ich mein Panel endlich zum scrollen gebracht habe.:(
Du könntest auch zum Testen einfach mal ein kleineres GUI-Progrämmchen anlegen, in dem dann nur das Panel mit den Checkboxen in die Scrollpane gepackt wird. Nur um mal zu schauen, wie der richtige Aufbau funktioniert. Und wenn es dann klappt, das in dein richtiges Programm einbauen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
volcanos Scrollen: JScrollPane mit Graphics g und Java-Fonts extends Frame ? AWT, Swing, JavaFX & SWT 5
E JScrollPane mit JPanel verbinden AWT, Swing, JavaFX & SWT 1
B Swing JScrollPane scrollt nicht AWT, Swing, JavaFX & SWT 10
P JTextarea (in JScrollPane) zeigt nur die beiden letzten Einträge an? AWT, Swing, JavaFX & SWT 0
O Swing "Eigenes" JPanel wird dem JScrollPane nicht hinzugefügt AWT, Swing, JavaFX & SWT 5
E Komponenten von JScrollPane werden nicht richtig ermittelt AWT, Swing, JavaFX & SWT 2
E wie in JScrollPane auf JTextArea zugreifen AWT, Swing, JavaFX & SWT 12
N Swing JScrollPane mit Tastatur bedienen? AWT, Swing, JavaFX & SWT 0
F JScrollPane anzeige AWT, Swing, JavaFX & SWT 7
K Swing JScrollPane wird nicht angezeigt wenn man Components darstellt. AWT, Swing, JavaFX & SWT 2
M Swing JPanel in JScrollPane AWT, Swing, JavaFX & SWT 3
M Problem mit Add JScrollPane AWT, Swing, JavaFX & SWT 25
P Swing JEditorPane in Kombination mit JScrollPane AWT, Swing, JavaFX & SWT 29
S Swing jScrollPane - pro Eintrag der Liste, die jCheckBoxes Speichern die in dem Eintrag aktiviert wurden AWT, Swing, JavaFX & SWT 2
T Swing Probleme mit repaint() bzw. JScrollPane AWT, Swing, JavaFX & SWT 7
D JScrollPane in JTabbedPane AWT, Swing, JavaFX & SWT 3
MaxG. Swing JScrollPane AWT, Swing, JavaFX & SWT 10
Soloeco Swing JScrollPane AWT, Swing, JavaFX & SWT 6
A Swing Probleme mit dem adden von JButtons zur JScrollPane AWT, Swing, JavaFX & SWT 2
A JScrollPane soll JPanel mit JButtons enthalten und eine Scollbar anzeigen AWT, Swing, JavaFX & SWT 1
J JScrollPane funktioniert nicht AWT, Swing, JavaFX & SWT 5
B LayoutManager GridBagLayout und JScrollPane AWT, Swing, JavaFX & SWT 5
Thallius JScrollPane Scrollpos setzen nach Neuzeichnen AWT, Swing, JavaFX & SWT 3
P MalProgramm mit JScrollPane und Canvas AWT, Swing, JavaFX & SWT 2
D Swing JScrollPane Tabelle ändern (2 Tabellen) AWT, Swing, JavaFX & SWT 7
U JScrollPane -> JTabbedPane u.A. AWT, Swing, JavaFX & SWT 3
A Layout-Manager, JScrollPane, ... Chaos AWT, Swing, JavaFX & SWT 5
V JScrollPane im zur Laufzeit verändernden JFrame AWT, Swing, JavaFX & SWT 0
W Swing Größenänderung vom JPanel im JScrollPane und anschließendes positionieren AWT, Swing, JavaFX & SWT 2
X Swing JButton's zum JScrollPane hinzufügen geht nicht. Bitte um Hilfe. AWT, Swing, JavaFX & SWT 9
G JTextArea mit JScrollPane wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
K Swing JScrollPane - JScrollBar anzeigen, wenn Frame verkleinert wird AWT, Swing, JavaFX & SWT 3
N Swing Problem beim Scrollen mit JScrollPane AWT, Swing, JavaFX & SWT 6
Bluedaishi JScrollpane AWT, Swing, JavaFX & SWT 0
L JScrollPane scrollt nicht !! AWT, Swing, JavaFX & SWT 3
F JScrollPane Position setzen (x=0, y=0) AWT, Swing, JavaFX & SWT 2
R JScrollPane überdeckt JPanel? AWT, Swing, JavaFX & SWT 7
H JTree in JScrollPane passt sich nicht an Größe von JPanel an AWT, Swing, JavaFX & SWT 2
S JScrollPane und BorderLayout AWT, Swing, JavaFX & SWT 1
M Mehrere Jpanel in einem JScrollPane (Layout) AWT, Swing, JavaFX & SWT 2
W Swing JScrollPane für mein Fenster AWT, Swing, JavaFX & SWT 4
A Swing Probleme mit JScrollPane AWT, Swing, JavaFX & SWT 6
F JTable mit JScrollPane AWT, Swing, JavaFX & SWT 4
I JPanel in JScrollPane verkleinert sich leider nicht .... AWT, Swing, JavaFX & SWT 2
G JScrollPane bricht am Ende der Anzeige nicht um AWT, Swing, JavaFX & SWT 2
J Swing JTextPane mit JScrollPane auf JPanel scrollen nicht AWT, Swing, JavaFX & SWT 6
W Sichtbarer Bereich JScrollPane vs. JList AWT, Swing, JavaFX & SWT 3
B Swing JPanel in JScrollPane einfügen AWT, Swing, JavaFX & SWT 2
S 2D-Grafik Transparentes JScrollPane AWT, Swing, JavaFX & SWT 0
S 3D-Grafik 3d Grafik auf einem JPanel oder im JScrollPane AWT, Swing, JavaFX & SWT 1
R Ändern Default-Verhalten von JScrollpane in einer JScrollpane AWT, Swing, JavaFX & SWT 1
S JScrollPane --> Programm hängt sich beim scrollen auf AWT, Swing, JavaFX & SWT 2
A JScrollPane - ScrollBar Buttongröße verändern AWT, Swing, JavaFX & SWT 1
J Bilder auf JPanel (im JScrollPane) nacheinander laden AWT, Swing, JavaFX & SWT 0
A Swing JScrollPane Problem AWT, Swing, JavaFX & SWT 6
H Swing JScrollPane mit "viel Inhalt" scrollt zu langsam (inkl. See-For-Yourself.jar :D) AWT, Swing, JavaFX & SWT 2
T Swing JScrollPane in JPanel - Breite dynamisch, Höhe fix - wie? AWT, Swing, JavaFX & SWT 2
D Swing JScrollPane in JScrollPane - Problem AWT, Swing, JavaFX & SWT 3
K Bug in JScrollPane? AWT, Swing, JavaFX & SWT 4
T Swing JScrollPane Farbe der Scrollbar AWT, Swing, JavaFX & SWT 3
M JScrollPane Header AWT, Swing, JavaFX & SWT 3
G JScrollPane über JScrollPane AWT, Swing, JavaFX & SWT 2
V LayoutManager JScrollPane verwirft Elementanordnung AWT, Swing, JavaFX & SWT 3
B JScrollPane Problem AWT, Swing, JavaFX & SWT 2
D Swing JScrollPane AWT, Swing, JavaFX & SWT 7
H cardlayout und jscrollpane AWT, Swing, JavaFX & SWT 14
F 2D-Grafik Skalieren der Scrollbars beim Zoomen einer JScrollPane AWT, Swing, JavaFX & SWT 4
B JScrollPane Horizontal klappt nicht. AWT, Swing, JavaFX & SWT 4
G JScrollPane reagiert nicht auf Änderung der JPanel-Größe AWT, Swing, JavaFX & SWT 4
C jPanel auf jScrollPane zentrieren AWT, Swing, JavaFX & SWT 3
M Swing JScrollPane (Parent JTextArea) aktualisieren + neue Zeile AWT, Swing, JavaFX & SWT 5
U Swing JPane und JScrollpane in JSplitpane-Seite: Scrollen funktioniert nicht AWT, Swing, JavaFX & SWT 3
A Swing Korrekte JTable.rowAt(point) für JTable in JScrollPane AWT, Swing, JavaFX & SWT 5
D Label über JScrollPane AWT, Swing, JavaFX & SWT 3
S JScrollPane reagiert nicht AWT, Swing, JavaFX & SWT 3
X JScrollPane zu JTable hinzufügen AWT, Swing, JavaFX & SWT 16
H JScrollPane - JEditorPane und HTML-Tabelle AWT, Swing, JavaFX & SWT 2
D LayoutManager JScrollPane mit dynamischem Inhalt AWT, Swing, JavaFX & SWT 8
P Swing JScrollpane AWT, Swing, JavaFX & SWT 2
B JScrollPane scrollt nicht immer automatisch AWT, Swing, JavaFX & SWT 2
V Swing JScrollPane Viewport verschieben AWT, Swing, JavaFX & SWT 2
J JScrollPane Probleme AWT, Swing, JavaFX & SWT 3
S Swing JScrollPane verliert Scrollbars AWT, Swing, JavaFX & SWT 5
D Swing JTable in JScrollpane beliebig verbreitern AWT, Swing, JavaFX & SWT 5
A Swing Anzeige Text in JScrollpane AWT, Swing, JavaFX & SWT 8
J Swing Unteren Abstand für JTable in JScrollPane festlegen AWT, Swing, JavaFX & SWT 10
xehpuk Swing Line-wrapping von JTextPane (in JScrollPane) AWT, Swing, JavaFX & SWT 3
M JScrollPane Problem AWT, Swing, JavaFX & SWT 6
S Swing JScrollpane und ViewPort AWT, Swing, JavaFX & SWT 4
D JScrollPane funktioniert nicht AWT, Swing, JavaFX & SWT 12
X JScrollPane funzt net... AWT, Swing, JavaFX & SWT 5
H jscrollpane AWT, Swing, JavaFX & SWT 12
RELAXccc Swing JTree + JScrollPane, refresh Problem AWT, Swing, JavaFX & SWT 17
A Problem mit JScrollPane in einer JScrollpane AWT, Swing, JavaFX & SWT 4
B JScrollPane Problem AWT, Swing, JavaFX & SWT 25
T Swing JScrollPane- und Tabelle-Header Problem AWT, Swing, JavaFX & SWT 25
P Swing JScrollPane-Inhalt: Grösse anpassen AWT, Swing, JavaFX & SWT 6
G Swing Höhe des View eines JScrollPane fest auf Höhe des JScrollPane setzen! AWT, Swing, JavaFX & SWT 4
C Swing JScrollPane und Scroll-Geschwindigkeit AWT, Swing, JavaFX & SWT 8
S JScrollpane mit JPanel und Probleme AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben