Liste von JPanels mit festen Höhen

Samarek

Aktives Mitglied
Hallo zusammen,

ich bin echt kein Freund von Layouts in Java, alles andere ist toll, nur Layouts nerven mich IMMER.
(Vorallem weil ich mich mittlerweile an die entspannten Möglichkeiten in Android gewöhnt habe)

Naja, zur Sache ...

ich möchte gerne Ergebnisse aus einer Datenbanksuche in einem JScrollPane anzeigen.
Jedes Ergebnis bekommt ein eigenes JPanel, mit einem Bild (100x100), Namen, Metatags, eine kleine Tabelle mit ein paar Werten und einem kleinen Button der einem noch mehr Details zeigt.

Wenn ich 3 oder mehr Ergebnisse bekomme ist alles super, soviele passen nämlich nicht in das Fenster, das JPanel hat seine minimale Höhe und es wird gescrollt. TOP! So soll's sein. :toll:
Aber wenn es nur 1 oder 2 Ergebnisse sind werden die beiden (oder das eine) der Höhe nach gestreckt und alles sieht aus ... naja, sieht halt nicht schön aus.

Hat da jemand eine gute Idee was ich da machen kann?
 
Ist das eine JList, oder ein Container-Panel mit GridLayout oder BoxLayout? Vielleicht mal sowas wie
Java:
JPanel panelWithOtherPanels = ...
// Weg: JScrollPane pane = new JScrollPane(panelWithOtherPanels);

// Hin:
JPanel wrapper = new JPanel(new BorderLayout());
wrapper.add(panelWithOtherPanels, BorderLayout.NORTH);
JScrollPane pane = new JScrollPane(wrapper);
 
Java:
public class ListPanel extends JPanel
{
	
	private static final long serialVersionUID = 1L;
	private SequentialGroup vGroup;
	private ParallelGroup hGroup; 
	
	public ListPanel(MainFrame p)
	{
		this.parent = p;
		GroupLayout layout = new GroupLayout(this);
		vGroup = layout.createSequentialGroup();
		hGroup = layout.createParallelGroup(Alignment.CENTER);
		
		layout.setVerticalGroup(vGroup);
		layout.setHorizontalGroup(hGroup);
		this.setLayout(layout);
		
	
	/**
	 * adds an entry to the list panel
	 */
	public void addEntry(JPanel entry)
	{	
		vGroup.addComponent(entryPanel);
		hGroup.addComponent(entryPanel);
		revalidate();
	}
	
	/**
	 * resets the panel
	 */
	public void reset()
	{
		this.removeAll();
		revalidate();
	}
	
}
 
Im Wesentlichen ist es ein Containerpanel.

Also ...
Auf ein JPanel "Inhalt" werden die Suchergebnis-JPanels gelegt.
Inhalt wird dann auf das JScrollPane gelegt und das JScrollPane wird einem JTabbedPane hinzugefügt.

Das JPanel "Inhalt" hat übrigens ein BoxLayout.

Eure Vorschläge sehen schonmal sehr cool aus, werd ich mich jetzt mal ein wenig mit auseinandersetzen.
Danke schonmal.

Edit:
Das mit dem eigenen ListPanel hat leider nicht wirklich so funktioniert, aber das mit dem Wrapper Panel ist annehmbar nah am gewünschten Ergebnis. Danke.
Für weitere Verbesserungsvorschläge bin ich natürlich nach wie vor dankbar.
 
Zuletzt bearbeitet:

Zurück
Oben