JButton-Click in JList mit Panels (auf dem der Button ist)

Dalanie

Mitglied
Hallo!
Ich habe folgendes Problem (oder besser gesagt zwei ;) ):

Ich habe eine JList mit Panels. Auf jedem Panel ist ein Button drauf.

Nun versuche ich, die ActionListener der Button zu verwenden, aber dies schlägt fehl. Wenn ich auf den Button klicke, so wird der Eintrag selektiert, aber der Listener reagiert nicht.

Gibt es da irgendwelche anderen Möglichkeiten?

Des Weiteren würde mich interessieren, ob man die Größe eines Eintrags in der JList dynamisch gestalten kann. Soviel Platz, wie mein JPanel brauch, soll es auch in der JList einnehmen

Grüße und Danke im vorraus

d.
 
S

schlagi123

Gast
Hallo Dalanie,

meine Idee ohne den Code zu kennen und zu wissen was du damit bezweckst wäre:
Statt der JList benutzt du einen JPanel der ein VerticalFlowLayout hat.
 

Michael...

Top Contributor
Ich habe eine JList mit Panels. Auf jedem Panel ist ein Button drauf.

Nun versuche ich, die ActionListener der Button zu verwenden, aber dies schlägt fehl. Wenn ich auf den Button klicke, so wird der Eintrag selektiert, aber der Listener reagiert nicht.

Gibt es da irgendwelche anderen Möglichkeiten?
Die JList benutzt zur Darstellung Ihrer Inhalte einen sogenannten Renderer (vgl. ListCellRenderer).

Das bedeuten, das was man in der JList sieht sind keine Buttons sondern nur Abbildungen von Buttons. Daher ist es eigentlich nutztlos Buttons direkt in eine JList zu stecken. Man kann beliebige Objekte (Strings, selbstdefinierte Objekte...) in die JList stecken und sie mittels eines eigen definierten Renderers als JButton darstellen.

Im Gegensatz zu anderen Komponenten (wie JTable, JTree) besitzt sie allerdings keinen Editor. D.h. während es bei letzteren relativ einfach ist einen echten Button als Editor zu verwenden, kann das bei einer JList recht kompliziert werden.
Einfacher wäre hier mittels eines SelektionListeners auf Selektionsänderungen der JList oder mittels MouseListener auf Mausklicks in der JList zur reagieren. (Man hat dann halt nicht den "Button eingedrückt Effekt")
Des Weiteren würde mich interessieren, ob man die Größe eines Eintrags in der JList dynamisch gestalten kann. Soviel Platz, wie mein JPanel brauch, soll es auch in der JList einnehmen
Das geht dann definitiv nur über den ListCellRenderer - kann allerdings je nach Komplexität der Komponente (Objekt mit definierter Höhe vs. JTextArea mit automatischen Zeilenumbruch) etwas kompliziert werden.
 
V

vanny

Gast
Hier gehts wohl erstmal um die Entscheidungsfrage, wie ein Problem gelöst werden kann.

Vielleicht erzählst du uns mal genauer, was du bezwecken willst un warum du diesen Knopf in den Listeinträgen beötigst, dann kann man dir eher den richtigen Tip geben.

Gruß Vanny
 

Dalanie

Mitglied
Hey, danke für die Antworten ;)

Also grundlegendes Problem: Wir entwickeln eine Kommentarliste, wo oben links der Name des Verfassers steht und daneben ein E-Mail Button ist, welcher bei klick ein weiteres Fenster öffnet. Dadrunter steht Text. Dies ist zur Zeit in einer JList organisiert und wie oben beschrieben, funktioniert der Button-Click nicht. Die Begründung oben ergibt Sinn, sodass wir eventuell den Button entfernen oder eine andere Variante probieren?

Name Datum Button

Text......................


so wie hier dargestellt sieht in etwa ein Kommentar aus

grüße ;)
 
V

vanny

Gast
Ok,

wenn der Button immer die Gleiche Funktion hat, bietet es sich vielleicht an, den Button ausserhalb der JList zu platzieren und beim klick zu schauen, welcher JListeintrag selektiert ist.

PlanB wäre, die JList in die Tonne kloppen und mit JTable zu arbeiten.
Dort könnte man wie auch schon mal hier erwähnt den Button funktionsfähig einbinden.

Gruß Vanny
 

bERt0r

Top Contributor
Hatte unlängst das gleiche Problem und hab das ganze mit einem Panel gelöst, auf dem ein GroupLayout liegt, das dynamisch verändert wird. Diese Panel ersetzt quasi die list:
Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.GroupLayout.ParallelGroup;
import javax.swing.GroupLayout.SequentialGroup;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class EntryListPanel extends JPanel
{
	class EntryPanel extends JPanel
	{
		String entry;
		
		public EntryPanel(String e)
		{
			entry=e;
		}
		public String getEntry()
		{
			return entry;
		}
	}
	
	
	private static final long serialVersionUID = 1L;
	private SequentialGroup vGroup; // defines the vertical layout
	private ParallelGroup hGroup; // defines the horizontal layout
	private ActionListener actionListener;
	

	public EntryListPanel()
	{
		GroupLayout layout = new GroupLayout(this);
		vGroup = layout.createSequentialGroup();
		hGroup = layout.createParallelGroup(Alignment.CENTER);
		
		layout.setVerticalGroup(vGroup);
		layout.setHorizontalGroup(hGroup);
		this.setLayout(layout);
		
		actionListener = new ActionListener()
		{ 
			@Override
			public void actionPerformed(ActionEvent e)
			{
				EntryPanel panel = (EntryPanel) ((JComponent) e.getSource()).getParent();
				System.out.println(panel.getEntry());
			}
		};
		
	}
	

	public void addEntry(String entry)
	{
		EntryPanel entryPanel=new EntryPanel(entry);
		JLabel entryLabel=new JLabel(entry);
		entryPanel.add(entryLabel);
		
		JButton btnPrint=new JButton("Entry ausgeben");
		btnPrint.addActionListener(actionListener);
		entryPanel.add(btnPrint);
		
		vGroup.addComponent(entryPanel);
		hGroup.addComponent(entryPanel);
		revalidate();
	}
	
	public static void main(String[] args)
	{
		EntryListPanel panel=new EntryListPanel();
		panel.addEntry("Hallo");
		panel.addEntry("Welt");
		panel.addEntry("Was");
		panel.addEntry("los?");
		JFrame frame=new JFrame();
		frame.add(panel);
		frame.pack();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}
	
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C click auf JButton und darunter liegendes element AWT, Swing, JavaFX & SWT 5
T Jbutton Click farbe ändern AWT, Swing, JavaFX & SWT 4
G JButton mit importFiles-Funktion auf JDrawPane AWT, Swing, JavaFX & SWT 5
B JButton Search AWT, Swing, JavaFX & SWT 8
B Swing JButton mit KeyListener AWT, Swing, JavaFX & SWT 3
L JButton durch Mausklick auslösen und Enter-Taste AWT, Swing, JavaFX & SWT 2
N Erlennen ob JButton gedrückt ist AWT, Swing, JavaFX & SWT 6
D JButton Form verändern AWT, Swing, JavaFX & SWT 4
R Grafik per JButton laden und austauschen lassen AWT, Swing, JavaFX & SWT 14
SvenPittelkow Programm soll auf JButton warten bis der geklickt wurde AWT, Swing, JavaFX & SWT 1
Badebay Problem mit JButton AWT, Swing, JavaFX & SWT 2
Z Swing Drag and Drop mit einem JButton AWT, Swing, JavaFX & SWT 1
Z Swing Kann man auf JButton zeichenen AWT, Swing, JavaFX & SWT 3
J JButton Icon hinzufügen AWT, Swing, JavaFX & SWT 5
U Swing JButton mit Icon AWT, Swing, JavaFX & SWT 7
ms_cikar Jbutton erzeugt neue Buttons AWT, Swing, JavaFX & SWT 2
Drachenbauer Swing Wie ändere ich die Farbe der Konturen von jButton und jCombobox? AWT, Swing, JavaFX & SWT 18
Drachenbauer Swing Wie ändere ich die helle geklickt-Farbe von einem JButton? AWT, Swing, JavaFX & SWT 4
A Swing JButton mit Pfeiltasten bewegen AWT, Swing, JavaFX & SWT 6
F Swing Scrollbare Liste von JButton AWT, Swing, JavaFX & SWT 4
Hatsi09 JButton text layout AWT, Swing, JavaFX & SWT 9
J JButton zum ändern Der Schriftart/Schriftgröße AWT, Swing, JavaFX & SWT 2
A Swing JButton aussehen AWT, Swing, JavaFX & SWT 12
J jButton soll nach klicken eine Variable um 1 erhöhen AWT, Swing, JavaFX & SWT 2
Legi Swing JButton Icon verschiebt sich AWT, Swing, JavaFX & SWT 2
T Swing Änderung des ActionListener Events nach Klick auf JButton AWT, Swing, JavaFX & SWT 2
S Swing JButton verschwindet nach Compilieren AWT, Swing, JavaFX & SWT 8
B Swing Posistion von JButton auslesen gibt immer 0 aus AWT, Swing, JavaFX & SWT 1
J Thread kennt JButton nicht. AWT, Swing, JavaFX & SWT 11
G Swing JButton ändert (unerwünscht) Größe bei Ausführung AWT, Swing, JavaFX & SWT 4
MR._FIRE_Flower Variable setzten mit JButton AWT, Swing, JavaFX & SWT 5
S Mit JButton neues Fester öffnen und das alte schließen AWT, Swing, JavaFX & SWT 3
T JButton wird beim vergrößern des Fensters erst sichtbar AWT, Swing, JavaFX & SWT 4
R Swing Verändern der Ausrichtung JButton und neu anzeigen AWT, Swing, JavaFX & SWT 2
G Swing JButton - Keine Klickanimation AWT, Swing, JavaFX & SWT 4
Joker4632 JButton nicht sichtbar, aber funktionsfähig AWT, Swing, JavaFX & SWT 8
B Swing JButton deaktivieren, wenn nicht alle JTextFields ausgefüllt sind. AWT, Swing, JavaFX & SWT 2
D JButton per Tastenkombi auswählen AWT, Swing, JavaFX & SWT 2
K JButton nicht sichtbar machen für User 2 AWT, Swing, JavaFX & SWT 4
L Swing JButton soll link öffnen AWT, Swing, JavaFX & SWT 1
K JButton auf anderer Klasse AWT, Swing, JavaFX & SWT 6
A JButton soll durch anklicken die Farbe wechseln AWT, Swing, JavaFX & SWT 8
T KeyListener funktioniert nicht wenn ich ein JButton hinzufüge AWT, Swing, JavaFX & SWT 1
R Swing ActionListener bei JButton AWT, Swing, JavaFX & SWT 9
B JButton -> Rahmen wegbekommen AWT, Swing, JavaFX & SWT 7
N JButton über benutzerdefinierte paintComponent setzen AWT, Swing, JavaFX & SWT 3
T JButton überlagern sich und werden erst beim Mausscrollen sichtbar AWT, Swing, JavaFX & SWT 2
B JButton erscheint in JFrame, obwohl er diesem nicht zugeordnet wurde! AWT, Swing, JavaFX & SWT 1
M JButton Probleme AWT, Swing, JavaFX & SWT 14
T Klasse über JButton schließen AWT, Swing, JavaFX & SWT 4
M Textfarbe JButton verändern AWT, Swing, JavaFX & SWT 2
N JButton ausblenden AWT, Swing, JavaFX & SWT 2
M Swing jButton Text verschwindet AWT, Swing, JavaFX & SWT 2
C Swing JButton wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
stylegangsta JLabel durch Klick auf JButton einblenden AWT, Swing, JavaFX & SWT 16
stylegangsta Eigene Klasse für JButton aus dem JFrame abrufen AWT, Swing, JavaFX & SWT 29
stylegangsta MouseEvents aus JButton aufrufen AWT, Swing, JavaFX & SWT 3
stylegangsta JButton Transparent anzeigen AWT, Swing, JavaFX & SWT 9
stylegangsta JButton Fehelr javax.swing.ImageIcon.<init>(Unknown Source) AWT, Swing, JavaFX & SWT 24
X Swing JButton's zum JScrollPane hinzufügen geht nicht. Bitte um Hilfe. AWT, Swing, JavaFX & SWT 9
D JButton - Nur Icon anzeigen / transparenter Hintergrund AWT, Swing, JavaFX & SWT 2
S JButton-Label vergrößern AWT, Swing, JavaFX & SWT 2
J Swing Basics - JButton funktioniert nicht. AWT, Swing, JavaFX & SWT 1
L JButton mit ImageIcon/Fehlermeldung AWT, Swing, JavaFX & SWT 1
D jButton Problem, ein Rieser Button bedeckt das ganze frame AWT, Swing, JavaFX & SWT 1
L Array mit JButton, wie rausfinden auf welche JButton geklickt wurde + index des JButtons ausgeben AWT, Swing, JavaFX & SWT 4
K (GUI) JButton Farbe bei druck ändern AWT, Swing, JavaFX & SWT 3
L JButton mit Image AWT, Swing, JavaFX & SWT 5
fLooojava JButton [Focus) AWT, Swing, JavaFX & SWT 4
M JButton - Listener AWT, Swing, JavaFX & SWT 1
D jButton auf von jFrame erzeugtem jDialog AWT, Swing, JavaFX & SWT 16
L JButton flackern - Programm hängt sich auf AWT, Swing, JavaFX & SWT 3
L JButton - Größe anders als erwartet AWT, Swing, JavaFX & SWT 2
1 JButton nach Klick ausblenden AWT, Swing, JavaFX & SWT 6
X Swing 1 JButton bedeckt meine ganze Frame aber Warum? AWT, Swing, JavaFX & SWT 2
S Größe und Farbe vom JButton festlegen AWT, Swing, JavaFX & SWT 2
H Swing JList/JTable mit JButton, JTextField, Image, JComboBox und JLable AWT, Swing, JavaFX & SWT 2
J JButton neu zeichnen lassen AWT, Swing, JavaFX & SWT 9
S JButton u. Label auf paint-Methode AWT, Swing, JavaFX & SWT 1
HoloYoitsu Swing JButton in verschiedenen Winkeln drehen AWT, Swing, JavaFX & SWT 0
J vocab1 = new JButton(""+voc1.get(nr).toString()+""); AWT, Swing, JavaFX & SWT 16
A JButton wird bei ActionListener nicht "angenommen" AWT, Swing, JavaFX & SWT 7
BRoll JButton Text nicht ausblenden ("...") AWT, Swing, JavaFX & SWT 2
I JFrame mit JButton schließen? AWT, Swing, JavaFX & SWT 0
D JList&JButton erst nach Resize des JFRame sichtbar AWT, Swing, JavaFX & SWT 2
J Swing JFrame slideout, wenn JButton gedrückt wurde AWT, Swing, JavaFX & SWT 0
S Swing Rückmeldung für JButton AWT, Swing, JavaFX & SWT 4
R AWT JLabel oder JButton aktualisieren AWT, Swing, JavaFX & SWT 1
L JButton im Frame fest verankern AWT, Swing, JavaFX & SWT 0
M Swing Mix JComboBox - JButton? AWT, Swing, JavaFX & SWT 6
U Event Handling JButton Actionevent: starte Spiel AWT, Swing, JavaFX & SWT 4
E JButton füllt ganzes JPanel auf AWT, Swing, JavaFX & SWT 6
P Verbuggte custom JButton unter Windows AWT, Swing, JavaFX & SWT 9
W Swing JButton lässt sich nicht anzeigen AWT, Swing, JavaFX & SWT 8
Kandum Swing JButton - onclick -> Grafikfehler AWT, Swing, JavaFX & SWT 2
R JButton durch Enter auslösen AWT, Swing, JavaFX & SWT 7
T Swing JButton per Drag&Drop verschieben AWT, Swing, JavaFX & SWT 5
M Problem mit FlowLayout, JLabel und JButton AWT, Swing, JavaFX & SWT 4
M JButton wird von JTree überdeckt AWT, Swing, JavaFX & SWT 4
D Swing JButton.setenabled(true) funktioniert nicht AWT, Swing, JavaFX & SWT 12

Ähnliche Java Themen

Neue Themen


Oben