LayoutManager JScrollPane mit dynamischem Inhalt

DCircle

Mitglied
Hallo zusammen!

Ich habe jetzt schon eine Weile im Internet gesucht und leider nichts zu meinem Problem gefunden.

Ich programmiere derzeit eine GUI, die unter anderem Datenbankwerte ausliest und als Scrollbare Liste im Fenster ausgibt. Dazu habe ich einen Array aus JPanels erzeugt und jedes dieser JPanels enthält die entsprechenden ausgelesenen Werte. Diese Panels habe ich in ein großes Panel gesteckt, welches von mir ein GridLayout(0,1) bekommen hat. Dieses große Panel wird dann auf ein JScrollPane gesetzt und fertig :)

Das Problem: Wenn ich nur wenige Werte in der Datenbank habe, werden die einzelnen Panels so vergrößert, dass sie trotzdem das gesamte große Panel ausfüllen.

Ich vermute stark, dass es am GridLayout liegt. Allerdings weiß ich nicht, wie ich ohne das GridLayout die kleinen Panels als untereinander stehende Liste ausgeben kann.

Bin für alle Anregungen dankbar!

Hier ein Dummycode:

Java:
import java.awt.*;
import javax.swing.*;


@SuppressWarnings("serial")
public class ScrollFenster extends JFrame {
	
	public int size = 2;
	public JPanel box[] = new JPanel[size];
	public JLabel datenA[] = new JLabel[size];
	public JLabel datenB[] = new JLabel[size];
	public JLabel datenC[] = new JLabel[size];
	public JLabel datenD[] = new JLabel[size];
	
	public JPanel content = new JPanel();
	public JScrollPane contentScroll;
	
	public ScrollFenster(){
		
		super("Testfenster");
    	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	setSize(400,300);
    	setLocation(100,100);
    	setLayout(new BorderLayout(10,30));
		
		for(int i=0;i<size;i++){
    		box[i] = new JPanel();
    		datenA[i] = new JLabel("Dummytext: "+i);
    		datenB[i] = new JLabel("Dummylabel: "+i);
    		datenC[i] = new JLabel("Dummybeschreibung: "+i);
    		datenD[i] = new JLabel("Dummyirgendwas: "+i);

    		box[i].setLayout(new GridLayout(0,2,10,10));
    		
    		box[i].add(datenA[i]);
    		box[i].add(datenB[i]);
    		box[i].add(datenC[i]);
    		box[i].add(datenD[i]);

    		box[i].setBackground(new Color(250,250,250));

    		content.add(box[i]);
    		content.setLayout(new GridLayout(0,1,0,5));
    	}
		contentScroll = new JScrollPane(content);
		add(contentScroll);
	}
	
	public static void main(String[] args){
		ScrollFenster scroll = new ScrollFenster();
		scroll.setVisible(true);
	}
}

Verändert man in diesem Beispiel size auf einen höheren wert (z.B. 20), so wird eine schöne scrollbare
Liste angezeigt. Ich hätte eine ähnliche Darstellung gerne auch für kleine Werte. In der Form, dass der ungenutzte Teil des großen Panels einfach leer bleibt.
 
C

Camino

Gast
Ich vermute stark, dass es am GridLayout liegt. Allerdings weiß ich nicht, wie ich ohne das GridLayout die kleinen Panels als untereinander stehende Liste ausgeben kann.
Das stimmt mit dem GridLayout. Vermutlich ist es besser und einfacher, die Daten über eine JTable anzeigen zu lassen.
 

DCircle

Mitglied
Wow das ging schnell ;)

Also so wie ich dich verstehe meinst du, dass ich die Daten in eine große Tabelle schreiben soll?
Würde das ganze dann nicht etwas...merkwürdig aussehen?

Ich lese an einigen Stellen 6 bis 8 verschiedene Werte aus und würde sie gerne der Übersicht halber nicht nur horizontal nebeneinander auflisten, sondern auch untereinander. Daher ja die Idee mit den
kleinen Panels. Wenn möglich würde ich gerne auf eine horizontale Scrollbar verzichten.:(
 
C

Camino

Gast
Kommt ein bisschen auf die Werte drauf an. Vielleicht kannst du mal genauer beschreiben, was das für Werte sind. Und man kann bei JTable auch die Zeilen, Spalten und Zellen anpassen und gestalten. Es gibt z.B. die Möglichkeit, mit einem CellRenderer die Zellen entsprechend zu gestalten. Der Vorteil bei der JTable gegenüber deiner Lösung mit den Panels ist halt, dass du die Daten in ein TableModel stecken kannst, und sich dann die JTable aktualisieren kann, wenn sich die Daten ändern.
 

DCircle

Mitglied
Die Werte sind in den meisten Fällen Namen, Adressen und Datumsangaben.

Der Grund wieso ich so an den Panels festhalte ist, dass ich bereits in Stundenlanger Arbeit update-Funktionen für das JScrollPane geschrieben habe :p Ich bin allerdings noch ziemlich unerfahren mit Java und es würde mich nicht wundern, wenn meine bisherige Lösung unnötig viel Rechenzeit beansprucht :oops:

Naja jedenfalls gehört der ganze Mist zu so ner Art Routenplaner. Und daher wollte ich ganz gerne die Ortsangaben für Start und Ziel nebeneinander anzeigen lassen und dann direkt darunter die Startzeit und die Ankunftszeit.

In meinem momentanen Programm ist das ganze via GridLayout in den kleinen Panels gelöst und sieht - zumindest für genügend viele Elemente - genauso aus wie ichs haben wollte. Nur halt nicht für wenige Elemente...:(
 
C

Camino

Gast
Das geht bestimmt auch elegant mit JTable. Ich hatte das nämlich auch mal versucht, mit JScrollPane und einer dynamisch sich ändernden Anzahl an JPanels, weil ich das speziell gestalten wollte. Ist aber garnicht so einfach. Mit der JTable, einem Model für die Daten und Gestaltung der Tabelle und CellRenderern ging es dann aber viel einfacher und besser.
Mit dem CellRenderer hast du nämlich deine Zelle als ein JLabel und kannst das entsprechend gestalten. So lassen sich auch Werte untereinander anzeigen (JLabel mit HTML).
 
C

Camino

Gast
Und zur Gestaltung der Tabelle gibt es direkt für JTable so tolle Methoden wie: setRowHeight, setBackground, setShowGrid, setIntercellSpacing, setShowHorizontalLines, setGridColor...
 
Ä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
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
A JScrollPane AWT, Swing, JavaFX & SWT 16
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