Scrollpane mit dynamisch erzeugten Komponenten

Pharadox

Mitglied
Hi,

ich habe ein Problem, auf das ich keine Lösung finde und auf euren kompetenten Rat hoffe.

Ich erzeuge hier 20 Panels, die von der Höhe her mehr Platz als das Fenster benötigen.
Deshalb brauche ich eine Scrollbar um alle Panels darzustellen.

Leider will die Scrollpane aber nicht ihre Funktion erfüllen und ich kann nicht sagen warum.
Ich weis auch nicht ob die Scrollpane richtig anwende.

Hier der komplette Sourcecode:
Java:
package pmtest;

import javax.swing.*;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class view {
	
	public static void main(String[] args){
		//Fenster erzeugen
		JFrame frame = new JFrame("Fenster");
		frame.setResizable(false);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setPreferredSize(new Dimension(800,400));
		//layout des frames
		frame.setLayout(new GridBagLayout());
		
		GridBagConstraints mainGBC = new GridBagConstraints();
		
		//
		JLabel lblFilter = new JLabel("Filter:");
		JTextField txtFilter = new JTextField();
		
		//--> Panel in welchem die dynamisch angelegten panels liegen
		JPanel mainPanel = new JPanel();
		
		//--> die Scrollpane -> das MAINPANEL wird als ziel angegeben
		JScrollPane scroll = new JScrollPane(mainPanel);
		scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
        scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        //setze Größe so groß wie die vom mainPanel
        scroll.setPreferredSize(new Dimension(25,100));
		/*            0                     1
		 *      ----------------------------------------
		 *   0  | lblFilter  |  + txtFilter +++++++++  |
		 *      |--------------------------------------|
		 *      |  -------------------------------  -- |
		 *      |  |        mainPanel            |  x  |
		 *   1  |  |           mit               |  || |
		 *      |  |  vielen dynamischen panels  |  || |
		 *      |  -------------------------------  -- |
		 *      ----------------------------------------
		 */
        //Zusammenbau der Komponenten auf dem Fenster
        mainGBC.gridx=0;
		mainGBC.gridy=0;
		mainGBC.gridwidth=1;
		mainGBC.gridheight=1;
		frame.add(lblFilter,mainGBC);
		mainGBC.gridx=1;
		mainGBC.gridy=0;
		mainGBC.gridwidth=1;
		mainGBC.gridheight=1;
		frame.add(txtFilter,mainGBC);
		
		mainPanel.setPreferredSize(new Dimension(200,100));
		mainPanel.setBackground(new Color(255,200,200));
		
		//dynamisch die Boxen erzeugen
		int anzahlBoxen = 20;
		
		JButton[] btnArray = new JButton[anzahlBoxen];
		JPanel[] containerArray = new JPanel[anzahlBoxen];
		for(int i=0;i<anzahlBoxen;i++)
		{
			btnArray[i] = new JButton("OK");
			btnArray[i].addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					System.out.println("Button gedrückt!");
				}
			});
			
			containerArray[i] = new JPanel();
			containerArray[i].setBackground(new Color(200,255,200));
			containerArray[i].setPreferredSize(new Dimension(60,35));
			//jedes Panel das als Container dient, eigenes Layout
			containerArray[i].setLayout(new GridBagLayout());
			GridBagConstraints panelGBC = new GridBagConstraints();
			
			//den Button in den Containerpanel integrieren
			panelGBC.gridx=0;
			panelGBC.gridy=0;
			panelGBC.gridwidth=1;
			panelGBC.gridheight=1;
			containerArray[i].add(btnArray[i],panelGBC);
			//den Containerpanel an das MAINPANEL anfügen
			int koord = 1+i;
			mainGBC.gridx=0;
			mainGBC.gridy=koord;
			mainGBC.gridwidth=1;
			mainGBC.gridheight=1;
			mainPanel.add(containerArray[i], mainGBC);
		}
		//layoutposition der SCROLLPANE
		mainGBC.gridx=1;
		mainGBC.gridy=1;
		mainGBC.gridwidth=1;
		mainGBC.gridheight=1;
		frame.add(scroll,mainGBC);
		
		mainGBC.gridx=0;
		mainGBC.gridy=1;
		mainGBC.gridwidth=1;
		mainGBC.gridheight=1;
		frame.add(mainPanel,mainGBC);
        
        
		frame.pack();
		frame.setLocation(
				(Toolkit.getDefaultToolkit().getScreenSize().width)/2,
				(Toolkit.getDefaultToolkit().getScreenSize().height)/2		
		);
		//fenster sichtbar machen
		frame.setVisible(true);
	}
}
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
Zeile 107
> frame.add(mainPanel,mainGBC);
ist schlecht, damit fliegt mainPanel aus dem JScrollPane raus, kein Mehrfachverwenden von Komponenten!

und da die Kompenenten in mainPanel bisher alle nebeneinander liegen ist
> scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
äußerst kontraproduktiv.., von der geringen Size der JScrollPanel ganz abgesehen,

edit:
obwohl, mit
> mainPanel.setPreferredSize(new Dimension(200, 100));
zusammen gehts vielleicht auch wieder, das hatte ich rausgenommen,
Zeile 107 also vor allem


-------

Java:
frame.setLocation(
                (Toolkit.getDefaultToolkit().getScreenSize().width)/2,
                (Toolkit.getDefaultToolkit().getScreenSize().height)/2      
        );
geht kürzer so:
frame.setLocationRelativeTo(null);
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
O ScrollPane, TextArea Java Basics - Anfänger-Themen 1
C GUI- Scrollpane will nicht funktionieren Java Basics - Anfänger-Themen 2
D hilfe zu Java Scrollpane Java Basics - Anfänger-Themen 4
R Bild in ScrollPane einfügen!? Java Basics - Anfänger-Themen 5
K Scrollpane - versteh nur noch Fragezeichen Java Basics - Anfänger-Themen 6
K jList scrollPane Java Basics - Anfänger-Themen 2
M Layoutprobleme mit Scrollpane Java Basics - Anfänger-Themen 3
M Scrollpane an Textarea anhängen Java Basics - Anfänger-Themen 3
M ScrollPane Flow Layout Java Basics - Anfänger-Themen 4
D Was mache ich falsch beim ScrollPane ? Java Basics - Anfänger-Themen 2
R mehrere Obj. einer ScrollPane hinzufügen Java Basics - Anfänger-Themen 3
A table. kein header. kein scrollpane. Java Basics - Anfänger-Themen 5
S Wiedereinmal ScrollPane Java Basics - Anfänger-Themen 9
F ScrollPane wird nicht angezeigt Java Basics - Anfänger-Themen 4
districon Dynamisch Programmierung/Backtracking/Memoization Java Basics - Anfänger-Themen 3
T Klassen Denkfehler im Klassen "dynamisch" instanzieren? Java Basics - Anfänger-Themen 4
J Verundung dynamisch gestalten Java Basics - Anfänger-Themen 21
B Folgende Abfrage dynamisch programmieren? Java Basics - Anfänger-Themen 8
R Datenbank-Werte dynamisch ausgeben Java Basics - Anfänger-Themen 19
D new arraylist (List) dynamisch erstellen Java Basics - Anfänger-Themen 1
B Klassen Klasse dynamisch laden. Java Basics - Anfänger-Themen 8
N Dynamisch erzeugtes Label wird nicht angezeigt, TextField schon Java Basics - Anfänger-Themen 1
D Koordinatensystem dynamisch anpassen Java Basics - Anfänger-Themen 17
J Tableview, ObservableList ein bisschen dynamisch Java Basics - Anfänger-Themen 6
C Array - Länge dynamisch übergeben Java Basics - Anfänger-Themen 7
D Erste Schritte Dynamisch Objekte erzeugen und diese durchsuchen Java Basics - Anfänger-Themen 7
GreyFox Object dynamisch mit werten versehen. Java Basics - Anfänger-Themen 4
G Array dynamisch ausgeben Java Basics - Anfänger-Themen 3
S JTable dynamisch mit Datenbankinhalten füllen Java Basics - Anfänger-Themen 6
F Erste Schritte If Bedingung in Schleife dynamisch erweitern Java Basics - Anfänger-Themen 4
K JLabel zur Laufzeit dynamisch erzeugen Java Basics - Anfänger-Themen 7
V Text aus einer .txt dynamisch ins applet einpassen Java Basics - Anfänger-Themen 0
Y Eingabe-Formular mit JSP dynamisch machen - j/n/wie? Java Basics - Anfänger-Themen 2
N Dynamisch JTree erstellen Java Basics - Anfänger-Themen 3
R Objekte dynamisch erstellen? Java Basics - Anfänger-Themen 14
C Variablen Array dynamisch halten und ausrechnen Java Basics - Anfänger-Themen 14
N Ergebnisse dynamisch in Tabelle schreiben Java Basics - Anfänger-Themen 3
G JObjekte dynamisch vom Server erzeugen lassen Java Basics - Anfänger-Themen 4
I Dynamisch erzeugten Buttons Methoden zuweisen Java Basics - Anfänger-Themen 6
H Objekte dynamisch erzeugen? Java Basics - Anfänger-Themen 6
M Variablen dynamisch variableninhalt von Object auslesen Java Basics - Anfänger-Themen 4
S if-Block dynamisch aufbauen Java Basics - Anfänger-Themen 5
M Static Variable "dynamisch" aufrufen? Java Basics - Anfänger-Themen 8
B Klassen Objekte während der Laufzeit dynamisch anlegen Java Basics - Anfänger-Themen 8
A JButtons dynamisch generieren mit verschiedenen actionhandlern Java Basics - Anfänger-Themen 6
U JPanel dynamisch gestalten Java Basics - Anfänger-Themen 7
R Liste graphischer Objekte z.B. JButton dynamisch erstellen Java Basics - Anfänger-Themen 13
A Dynamisch die Anzahl der Threads in der Cyclic Barrier ändern Java Basics - Anfänger-Themen 2
K Datentypen Full qualified Name dynamisch gestalten Java Basics - Anfänger-Themen 7
M For-Schleifen dynamisch generieren? Java Basics - Anfänger-Themen 10
sqsh statische jlabels dynamisch verwalten Java Basics - Anfänger-Themen 2
O Wie kann man das einfach lösen? (dynamisch viele Attribute) Java Basics - Anfänger-Themen 6
L Tray-Einträge und dazu passende ActionListener dynamisch erzeugen? Java Basics - Anfänger-Themen 2
D JPanel dynamisch anpassen Java Basics - Anfänger-Themen 5
S Dialog dynamisch vergrößern Java Basics - Anfänger-Themen 2
S Dynamisch Zeit auslesen Java Basics - Anfänger-Themen 11
M JTextPane dynamisch erzeugen Java Basics - Anfänger-Themen 2
J Aufgaben Dynamisch auf Pool von Threads verteilen. Java Basics - Anfänger-Themen 3
D ArrayList dynamisch befüllen Java Basics - Anfänger-Themen 14
G Objekteigenschaften dynamisch erzeugen Java Basics - Anfänger-Themen 7
jnoob Checkbox in Dialog Dynamisch erstellen Java Basics - Anfänger-Themen 2
K suche nicht dynamisch Datenstruktur Java Basics - Anfänger-Themen 6
J ListModel dynamisch und schnell aber sicher ändern Java Basics - Anfänger-Themen 7
M Dynamisch Instanzen erstellen. Java Basics - Anfänger-Themen 4
G Zweidimensionales Array - dynamisch Java Basics - Anfänger-Themen 4
B arrays dynamisch vergrößern Java Basics - Anfänger-Themen 5
V Kundenklasse dynamisch erzeugen und id hochzählen? Java Basics - Anfänger-Themen 4
C Dynamisch durch alle Objektvariablen eines Objektes iteriere Java Basics - Anfänger-Themen 15
P JPanel dynamisch mit ActionListener verwalten Java Basics - Anfänger-Themen 3
R Arraygroesse dynamisch anpassen Java Basics - Anfänger-Themen 8
X this dynamisch, super statisch? Java Basics - Anfänger-Themen 3
G Namen von ArrayListen dynamisch erzeugen Java Basics - Anfänger-Themen 4
H variable dynamisch ändern Java Basics - Anfänger-Themen 2
G Klasse dynamisch ohne Datei compilieren: Fehler Java Basics - Anfänger-Themen 4
G Klasse dynamisch nachladen: Fehler Java Basics - Anfänger-Themen 9
T Array Dynamisch Erweiterm Java Basics - Anfänger-Themen 15
H dynamisch Klassen laden und ausführen Java Basics - Anfänger-Themen 3
M Gleichungen dynamisch erstellen und ausrechnen? Java Basics - Anfänger-Themen 8
G Pfad dynamisch gestalten. Java Basics - Anfänger-Themen 3
B Matrix Dynamisch erzeugen Java Basics - Anfänger-Themen 3
G JTable dynamisch erzeugen. Java Basics - Anfänger-Themen 2
D Labels Dynamisch ? Java Basics - Anfänger-Themen 5
6 Swing: Dynamisch erzeugte Objekte sind verschoben Java Basics - Anfänger-Themen 2
G Variablenname dynamisch vergeben Java Basics - Anfänger-Themen 10
H 2DArray manuell dynamisch erweitern Java Basics - Anfänger-Themen 7
G Länge eines Array trimmen oder dynamisch verändern. Java Basics - Anfänger-Themen 3
M Dynamisch Klassen aufrufen Java Basics - Anfänger-Themen 4
H JLabel dynamisch anzeigen? Java Basics - Anfänger-Themen 10
T ActionListener zu Buttons dynamisch zuordnen Java Basics - Anfänger-Themen 10
G dynamisch Jtextfields erzeugen Java Basics - Anfänger-Themen 3
M HTML Seite die Daten in JavaApplet dynamisch verarbeiten Java Basics - Anfänger-Themen 2
H Variablenname dynamisch festlegen Java Basics - Anfänger-Themen 3
H Variablenname dynamisch festlegen Java Basics - Anfänger-Themen 3
J Tabelle mit mehreren Zeilen dynamisch aufbauen Java Basics - Anfänger-Themen 2
K Bild dynamisch erstellen Java Basics - Anfänger-Themen 2
M Klasse dynamisch erzeugen! Java Basics - Anfänger-Themen 4
M [SOLVED]JComboBoxen dynamisch erstellen und abfragen Java Basics - Anfänger-Themen 2
S Dynamisch Platz für ein Array reservieren? Java Basics - Anfänger-Themen 7
Z Objekte dynamisch erzeugen Java Basics - Anfänger-Themen 19
O Variabelnamen dynamisch generieren Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben