mehrere JPanel in ein (vertikales) JScrollPane

g-a-s-t

Aktives Mitglied
Hallo,

ich habe ein JFrame mit unterschiedlichen Komponenten. Darunter ein JPanel (parent), welches weitere kleinere JPanel (child1,child2,..) beinhaltet.
Nun möchte ich jedoch mit Hilfe eines JScrollPane, dass sich die child's im parent nur vertikal scrollen lassen.

Durch die Festlegung der Größe des parent-Panels kann ich zwar den vertikalen Scrollbalken erzwingen, bei einer Größenänderung des JFrames ist jedoch diese Festlegung nur hinterlich. So dass zum Beispiel ein Scrollbalken angezeigt wird obwohl er nicht nötig wäre.
Java:
..
JPanel tab = new JPanel();
..
getContentPane().add(tab, BorderLayout.CENTER);
tab.setLayout(new GridBagLayout());

JPanel parent= new JPanel();
parent.setPreferredSize(new Dimension(215, 500));
parent.setLayout(new FlowLayout(FlowLayout.CENTER));
parent.add(getPanel(child1));
parent.add(getPanel(child2));
parent.add(getPanel(child3));
parent.add(getPanel(child4));
					
JScrollPane scroll = new JScrollPane(consPoints);			
					
tab.add(scroll,
	new GridBagConstraints(0, 0, 1, 2, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));

Ich bin über jeden Hinweis dankbar!
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
was ist jetzt die Frage?
wenn die erzwungenen Scrollbalken hinderlich sind, dann erzwinge sie NICHT?!
 

jgh

Top Contributor
was ist denn mit dieser Methode:
Java:
scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

oder halt für die VerticalenScrollBars entsprechend...
 

noobadix

Bekanntes Mitglied
Hi!

Zunächst das Obligatorische: Javakod bitte in java tags, das fördert die Übersichtlichkeit.
In einem Beispiel sollten alle Variablen erklärt werden, was bei "consPoints" nicht der Fall ist, in deinem Bsp. wird weder parent, noch child einem JScrollPane hinzugefügt.

Nun möchte ich jedoch mit Hilfe eines JScrollPane, dass sich die child's im parent nur vertikal scrollen lassen.

Du willst scheinbar, dass sich das parent, in dem sich children befinden, vertikal scrollen lässt. Oder liegen die children in einem jeweils eigenen JScrollPane?

Kennst du die ScrollBarPolicy, mit der du festlegen kannst, wann ScrollBars angezeigt werden und wann nicht? Ruf' auf deinem JScrollPane z.B. setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER) auf.

Gruß!
 

g-a-s-t

Aktives Mitglied
Zunächst das Obligatorische: Javakod bitte in java tags, das fördert die Übersichtlichkeit.
In einem Beispiel sollten alle Variablen erklärt werden, was bei "consPoints" nicht der Fall ist, in deinem Bsp. wird weder parent, noch child einem JScrollPane hinzugefügt.
Oh sorry, consPoints == parent.

Du willst scheinbar, dass sich das parent, in dem sich children befinden, vertikal scrollen lässt.
Ganz genau das möchte ich.

Kennst du die ScrollBarPolicy, mit der du festlegen kannst, wann ScrollBars angezeigt werden und wann nicht? Ruf' auf deinem JScrollPane z.B. setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER) auf.
Leider befinden sich damit alle child-Panels in einer Reihe.

 

noobadix

Bekanntes Mitglied
Das Problem, das sich nun ergibt, liegt beim LayoutManager des parent panels. Sofern deine child panels alle dieselbe Größe haben und du deren Anzahl vorher kennst, würde ich zum GridLayout raten, das du dann mit 2 Spalten und entsprechend vielen Reihen instantiierst. Anderenfalls müssten wir mal schauen, erzähl' wie es mit der Anzahl/Größe der child panels ist.
 

g-a-s-t

Aktives Mitglied
Das wäre natürlich eine gute Variante.
Doch möchte ich mich nicht auf nur zwei Spalten festlegen. Denn wenn das JFrame entsprechend vergrößert wird könnten auch drei oder vier Spalten entstehen.

Die child-Panels sind alle gleich groß nur die Anzahl kann variieren.
 

Michael...

Top Contributor
Weiss nicht, ob es dafür einen passenden LayoutManger gibt.
Hier mal ein möglicher Ansatz:
Java:
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.LayoutManager;
import java.util.ArrayList;
import java.util.List;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

public class TablePanelDemo extends JFrame {
	
	public TablePanelDemo() {
		TablePanel panel = new TablePanel();
		for (int i=0; i<10; i++) {
			JLabel label = new JLabel("COMP " +i, JLabel.CENTER);
			label.setBorder(BorderFactory.createEtchedBorder());
			panel.add(label);
		}
		this.getContentPane().add(new JScrollPane(panel));
	}
	
	class TablePanel extends JPanel implements LayoutManager { //, Scrollable {
		
		private List<Component> compList = new ArrayList<Component>();
		private Dimension minDimension = new Dimension(50, 50);
		private int gridWidth, gridHeight, hGap, vGap;
		
		public TablePanel() {
			this(100, 100);
		}
		
		public TablePanel(int gridWidth, int gridHeight) {
			this(gridWidth, gridHeight, 10, 10);
		}
		
		public TablePanel(int gridWidth, int gridHeight, int hGap, int vGap) {
			this.gridWidth = gridWidth;
			this.gridHeight = gridHeight;
			this.hGap = hGap;
			this.vGap = vGap;
			setLayout(this);
		}

		public Component add(Component comp) {
			this.addLayoutComponent("C" + comp.hashCode(), comp);
			return super.add(comp);
		}
		
		public void addLayoutComponent(String name, Component comp) {
			compList.add(comp);
		}
		
		public void layoutContainer(Container parent) {
			Container ct = parent.getParent();
			int col = ct.getWidth()/(gridWidth +hGap);
			if (col==0) col +=1;
			int row = compList.size()/col + ((compList.size()%col>0) ? 1 :0);
			int num=0;
			for (int r=0; r<row; r++) {
				for (int c=0; c<col; c++) {
					if (num<compList.size()) {
						compList.get(num++).setBounds(hGap + c * (gridWidth +hGap), vGap + r* (gridHeight +vGap), gridWidth, gridHeight);
					}
					else
						return;
				}
			}
		}
		
		public Dimension minimumLayoutSize(Container parent) {
			return minDimension;
		}
		
		public Dimension preferredLayoutSize(Container parent) {
			Container ct = parent.getParent();
			int col = ct.getWidth()/(gridWidth +hGap);
			if (col==0) col +=1;
			int row = compList.size()/col + ((compList.size()%col>0) ? 1 :0);
			return new Dimension(col * (gridWidth +hGap), row * (gridHeight +vGap) + vGap);
		}
		
		public void removeLayoutComponent(Component comp) {
			compList.remove(comp);
		}
	}
	
	public static void main(String[] s) {
		JFrame frame = new TablePanelDemo();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setBounds(0, 0, 200, 200);
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
	}
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Swing Mehrere JLabels mit ImageIcon in JPanel lesen AWT, Swing, JavaFX & SWT 1
M Mehrere Jpanel in einem JScrollPane (Layout) AWT, Swing, JavaFX & SWT 2
elischa JFrame über mehrere JPanel und Listener AWT, Swing, JavaFX & SWT 17
X Swing JPanel mehrere Ebenen zeichnen AWT, Swing, JavaFX & SWT 13
M Mehrere JPanel nacheinander?! AWT, Swing, JavaFX & SWT 11
D Wie mehrere Grafiken auf JPanel anzeigen lassen? (Observer pattern?) AWT, Swing, JavaFX & SWT 24
R Swing JPanel enthält mehrere JPanels - Positionsvergabe AWT, Swing, JavaFX & SWT 4
N Mehrere JTextArea in einem JPanel und eine JScrollPane AWT, Swing, JavaFX & SWT 3
S JFrame-Klasse soll ein/mehrere Objekte einer JPanel-Klasse-& AWT, Swing, JavaFX & SWT 3
H Mehrere Panels auf JFrame AWT, Swing, JavaFX & SWT 8
S Mehrere Tabellen Zellen gleichzeitig färben AWT, Swing, JavaFX & SWT 5
Apfelbaum2005 Swing JFrame mehrere JPanels mit unterschiedlichen Formen hinzufügen AWT, Swing, JavaFX & SWT 1
K JavaFX unterschiedliche (mehrere Fenster) in seperater Main Methode AWT, Swing, JavaFX & SWT 26
I Scene Builder - mehrere Seiten AWT, Swing, JavaFX & SWT 6
schoel27 Mehrere JButtons sollen das gleiche Event auslösen AWT, Swing, JavaFX & SWT 2
Z GUI Forms - Mehrere Fenster in einem Projekt AWT, Swing, JavaFX & SWT 18
M mehrere jTextField untereinander AWT, Swing, JavaFX & SWT 1
N Bilder auf Button einfügen und mehrmals ändern (ein Button, mehrere ActionListener) AWT, Swing, JavaFX & SWT 2
B Swing Sudoku: Laden / Speichern von Zahlen aus/in mehrere JTextFields aus/in eine(r) Textdatei AWT, Swing, JavaFX & SWT 9
M JavaFX JavaFX in mehrere Controller AWT, Swing, JavaFX & SWT 21
R mehrere buttons mit forschleife kreieren und individuell bearbeiten AWT, Swing, JavaFX & SWT 1
N JavaFX 1 Listener für mehrere ChoiceBoxen AWT, Swing, JavaFX & SWT 3
N Textdatei GUI, Text in Textarea anzeigen mehrere Zeilen AWT, Swing, JavaFX & SWT 1
temi JavaFX Mehrere Views mit Stage.setScene() oder mit Scene.setRoot()? AWT, Swing, JavaFX & SWT 7
P Swing Mehrere JPanels auf ein JFrame hinzufügen? AWT, Swing, JavaFX & SWT 2
T Swing Tetraeder - mehrere Punkte verbinden? - Ansätze gesucht AWT, Swing, JavaFX & SWT 2
K JavaFX in mehrere Controller aufteilen AWT, Swing, JavaFX & SWT 29
K JavaFX in mehrere Controller aufteilen AWT, Swing, JavaFX & SWT 0
stroggi Swing Mehrere transparentes Objekte (Grafiken) über einem Bild (JLabel) darstellen AWT, Swing, JavaFX & SWT 4
K Mehrere Linien zeichnen AWT, Swing, JavaFX & SWT 8
J JavaFX - mehrere Views, Model durchreichen AWT, Swing, JavaFX & SWT 10
it_is_all Swing Mehrere JComboBoxen - wie die versch. Boxen mit ItemStateChange auslesen? AWT, Swing, JavaFX & SWT 3
M Swing Mehrere Textfelder mit ScrollBars - Größe der Felder AWT, Swing, JavaFX & SWT 0
W JavaFX Mehrere Klassen in ein TableView AWT, Swing, JavaFX & SWT 6
F AWT mehrere Panels in einem Frame AWT, Swing, JavaFX & SWT 17
L JavaFX Mehrere JavaFX Szenen mit einem Menü AWT, Swing, JavaFX & SWT 1
D Java FXML mehrere Fenster AWT, Swing, JavaFX & SWT 4
F JavaFX Mehrere Stages "managen" AWT, Swing, JavaFX & SWT 2
r4w Changelistener auf mehrere Textfelder AWT, Swing, JavaFX & SWT 5
H Swing + Paint: Mehrere Objekte zeichnen lassen AWT, Swing, JavaFX & SWT 3
S Swing Mehrere Modal-Dialoge übereinander AWT, Swing, JavaFX & SWT 5
T 2D-Grafik JFreeChart mehrere Y-Achsen AWT, Swing, JavaFX & SWT 2
C JavaFX mehrere Kreise nach Eingabeprozess ausgeben AWT, Swing, JavaFX & SWT 2
Thallius Swing Mehrere tausend "Panels" erstellen AWT, Swing, JavaFX & SWT 3
C Java FX Warnmeldung: Mehrere Fonts gehören derselben Familie und Stil AWT, Swing, JavaFX & SWT 2
J Mehrere JInternalFrame; GetValues AWT, Swing, JavaFX & SWT 1
JG12111989 mehrere Polyline-Objekte zeichnen AWT, Swing, JavaFX & SWT 3
LexeB4F JTable mehrere Zelle selektieren und inhalte Löschen.. Ideen gesucht AWT, Swing, JavaFX & SWT 1
V Tastatur KeyListener für mehrere Buttons AWT, Swing, JavaFX & SWT 1
K JavaFX Mehrere Cell Editors in einem TreeView Item AWT, Swing, JavaFX & SWT 2
KaffeeFan mehrere JTextField durchlaufen AWT, Swing, JavaFX & SWT 4
J Java -8 Action Listener für mehrere Buttons AWT, Swing, JavaFX & SWT 9
T Dynamisch mehrere Checkboxen anlegen AWT, Swing, JavaFX & SWT 2
G JavaFX Menü und mehrere Scenes AWT, Swing, JavaFX & SWT 16
R Swing Mehrere JTextFields mit einem Document Listener AWT, Swing, JavaFX & SWT 2
D Mehrere RadiButtons auswählar AWT, Swing, JavaFX & SWT 3
P Swing JTable mehrere Zeilen markieren AWT, Swing, JavaFX & SWT 1
T JavaFX FXMLController für mehrere FXML? AWT, Swing, JavaFX & SWT 7
G mehrere Action-Abfolgen erfassen AWT, Swing, JavaFX & SWT 6
J Mehrere Hyperlinks "stilvoll" darstellen. AWT, Swing, JavaFX & SWT 1
G Mehrere Strings um Kreis zeichnen und positionieren AWT, Swing, JavaFX & SWT 0
S JavaFX Mehrere TreeTableView's synchron scrollen AWT, Swing, JavaFX & SWT 0
U Mehrere Oberflächeninstanzen seperat schließen AWT, Swing, JavaFX & SWT 5
J Rahmen um mehrere GUI Einzelteile AWT, Swing, JavaFX & SWT 2
S Layouts, mehrere Buttons nebeneinander AWT, Swing, JavaFX & SWT 2
M Mehrere Fenster innerhalb einer Application AWT, Swing, JavaFX & SWT 3
T Über mehrere Panel zeichnen AWT, Swing, JavaFX & SWT 2
M ActionListener für mehrere Klassen AWT, Swing, JavaFX & SWT 4
T [LWJGL] mehrere Displays? AWT, Swing, JavaFX & SWT 19
SexyPenny90 Mehrere Fenster AWT, Swing, JavaFX & SWT 2
M Handling 1 Fenster mehrere Panels AWT, Swing, JavaFX & SWT 2
Y Mehrere JSlider verlinken AWT, Swing, JavaFX & SWT 6
Java-Insel LayoutManager Ein GridBagLayout-Objekt für mehrere Panels? AWT, Swing, JavaFX & SWT 2
O Swing JLabel mehrere Zeilen AWT, Swing, JavaFX & SWT 2
P mehrere Rectangles per JButton AWT, Swing, JavaFX & SWT 9
B JToolBar dynamisch auf mehrere Zeilen erweitern AWT, Swing, JavaFX & SWT 2
Jats Zeichen auf mehrere JPanels AWT, Swing, JavaFX & SWT 7
G Mehrere Probleme mit Java's GUI AWT, Swing, JavaFX & SWT 6
G Mehrere Layoutprobleme AWT, Swing, JavaFX & SWT 2
Kenan89 JTable mehrere ListSelections AWT, Swing, JavaFX & SWT 2
M TextArea über mehrere Zeilen - wie Zeileanzahl abfragen? AWT, Swing, JavaFX & SWT 5
J Swing JDialog blokiert mehrere JFrames - soll aber nur den aufrufenden blockieren AWT, Swing, JavaFX & SWT 4
A mehrere Zeilen in GUi ausgeben AWT, Swing, JavaFX & SWT 2
N Mehrere Tasks nacheinander ausführen AWT, Swing, JavaFX & SWT 7
C SWT Mehrere Bilder in GUI laden AWT, Swing, JavaFX & SWT 5
propra Mehrere Objekte gleichzeitig verschieben AWT, Swing, JavaFX & SWT 7
M 2D-Grafik Mehrere Linien (nacheinander) übereinander Zeichnen AWT, Swing, JavaFX & SWT 6
Furtano AWT mehrere Bilder in einen Frame zeichnen + Layout Manager AWT, Swing, JavaFX & SWT 10
K SWT Mehrere Einträge ins Clipboard legen AWT, Swing, JavaFX & SWT 2
C Swing Ein JFrame mehrere Ansichten AWT, Swing, JavaFX & SWT 8
C Swing Mehrere JSlider sollen aufeinander reagieren AWT, Swing, JavaFX & SWT 4
GUI-Programmer JFilechooser, mehrere Datein selektieren und Reihenfolge (2) AWT, Swing, JavaFX & SWT 8
S Mehrere JLists - Wie kennzeichnen? AWT, Swing, JavaFX & SWT 2
S Swing MVC Ein JFrame, mehrere JPanels AWT, Swing, JavaFX & SWT 6
J Mehrere JRadioButtons, aber nur 1 darf ausgewählt sein AWT, Swing, JavaFX & SWT 4
L Swing Mehrere Button die selbe Größe AWT, Swing, JavaFX & SWT 4
B AWT mehrere Fenster schließen AWT, Swing, JavaFX & SWT 8
I Wie mehrere JComboBoxen in Abhängigkeit einer anderen Box ändern? AWT, Swing, JavaFX & SWT 8
F Swing Mehrere Textfelder in Scrollpane einfügen und dann zum Scrollen bringen? AWT, Swing, JavaFX & SWT 4
GianaSisters Swing jTable - Feldtext soll mehrere Zeilen haben AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben