Swing JList mit JPanels

  • Themenstarter Themenstarter Camino
  • Beginndatum Beginndatum
C

Camino

Gast
Hallo,

ich würde gerne eine JList mit JPanels füllen, weiss aber nicht, ob das mit JList überhaupt geht oder ob es besser geeignete Komponenten als die JList für so etwas gibt, bzw. wie ich das mit der JList richtig hinkriege.

Und zwar hab ich eine Klasse, die von JPanel abgeleitet ist. Auf dieses JPanel sollen (erstmal) ein JTextfield, ein JButton und ein Image gesetzt werden. Dann sollen mehrere dieser JPanels erzeugt und der JList hinzugefügt werden.

Wenn ich das so hinzufüge, dann wird nur 1 JPanel angezeigt:
Java:
		unterlagenStatusPanel1 = new UnterlagenStatusPanel();
		unterlagenStatusPanel2 = new UnterlagenStatusPanel();
		unterlagenStatusPanel3 = new UnterlagenStatusPanel();
		
		unterlagenListe = new JList();
		JScrollPane listScroller = new JScrollPane(unterlagenListe);
		listScroller.setPreferredSize(new Dimension(300, 150));
		
		unterlagenListe.add(unterlagenStatusPanel1);
		unterlagenListe.add(unterlagenStatusPanel2);
		unterlagenListe.add(unterlagenStatusPanel3);

Viele Grüsse
Camino
 
Was du suchst, ist ein ListCellRenderer. Übergib deiner JList einfach einen entsprechenden Renderer, der dein Panel darstellt.
 
Hey, vielen Dank an euch. Das mit dem ListCellRenderer und dem verlinkten Beispiel war genau richtig. Ich hab's jetzt auch so umgeschrieben und angepasst, dass es bei mir läuft. Hab erst mal nur 1 Label mit Text und 1 kleines Image (Icon) auf dem Panel angebracht. Jetzt muss ich nur noch die Anordnung auf dem Panel und die Farben ein bisschen bearbeiten. Evtl. kommt ja auch noch ein Button dazu. D.h. wahrscheinlich auch noch ein Listener, um auf Klicks zu reagieren.

Viele Grüsse
Camino
 
Hallo,

da wirst du leider Pech haben. 🙁
Siehe: http://www.java-forum.org/awt-swing-swt/102014-jlist-jspinner.html
Die JList ist dafür einfach nicht vorgesehen.

Sorry, daß hätte ich dir gleich früher sagen können. 😳
Habe es irgenwie überlesen, daß du da Buttons und Textfelder rein tun willst.

Mit einer Checkbox gibt es im Netz ein paar Beispiele, aber einen funktionsfähigen Button wirst du nicht so einfach zustandekriegen. Jedenfalls kaum mit allen Funktionen und Effekten, die ein Button hat.
Vielleicht könnte man feststellen, wann sich die Maus über dem gezeichneten Button befindet und ob gleichzeitig dazu die Maustaste betätigt wurde...

Eine Alternative ist die JTable (ein eckelhaftes Monster, wenn du mich fragst, aber evtl. genau das, was du brauchst), oder du nimmst ein JScrollPane, und haust da deine Zeilenpanels rein. (Du würdest damit praktisch eine JList nachmachen, könntest aber auch Dinge wie Buttons und Textfelder einsetzen. Je nachdem, welche JList-Eigenschaften du nachgemacht haben möchstest (z. B. Steuerung mit Tab), wird das aber 'ne Menge Arbeit. Habe sowas schon selber mal versucht.)

MfG
hansmueller
 
Schade... es hat schon so schön ausgesehen. Hab das natürlich gleich mal ausprobiert und Buttons auf das Panel gesetzt. Und tatsächlich werden sie nur angezeigt, können aber nicht geklickt werden. Da ich diese Funktionalität aber ziemlich sicher brauche, muss ich wohl was anderes ausprobieren. Wahrscheinlich ist JTable dann doch die einfachste und beste Lösung...
 
So, hab zuerst mal versucht, eine JScrollPane mit den JPanels zu füllen, was aber auch nicht so richtig geklappt hatte. Nun bin ich doch bei einer JTable mit TableCellRenderer gelandet, und die Daten in einem TableModel. Jetzt muss ich nur noch die Farben (Hintergrund, Selektion...) und Zellengrössen anpassen, dann sieht es auch wieder aus, wie vorher bei der JList, nur dass jetzt auch eine Funktionalität darauf gelegt werden kann.

Viele Grüsse
Camino
 

Neue Themen


Zurück
Oben