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:
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.
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.