ListSelectionListener durch Code auslösen

ludwigj

Mitglied
Java:
// JList bauen
JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(22, 176, 209, 88);
		panel_1.add(scrollPane);
		
		final JList list = new JList();
		list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		scrollPane.setViewportView(list);
		list.setModel(new DefaultListModel() {
			String[] values = new String[] {"..."}; // mehrere elemente einfügen
			public int getSize() {
				return values.length;
			}
			public Object getElementAt(int index) {
				return values[index];
			}
		});
//listener anhängen
list.addListSelectionListener(new ListSelectionListener() {
			@Override public void valueChanged(ListSelectionEvent event) { /* andere Komponenten verändern */); 


// das zweite element : eine combocheckbox
final JCheckBox chckbxGrundelementeDerGewhlten = new JCheckBox("name");
		chckbxGrundelementeDerGewhlten.setBounds(508, 405, 327, 23);
		panel_1.add(chckbxGrundelementeDerGewhlten);
// listener anhängen
chckbxGrundelementeDerGewhlten.addItemListener(new ItemListener(){
			public void itemStateChanged(ItemEvent event)
			{	if( event.getStateChange() == 1)
				{	doFoo				}
				else 
				{ /* hier ist mein problem! */}
			}});

hi zusammen,

also ich hab bekomm das nicht hin. ich bau mir oben eine JList und unten eine checkbox. ich will (hätte gerne) im else zweig des zweiten listeners, dass der listener der ersten komponente (list) ausgelöst wird.

- dispatchEvent geht nicht da ListSelectionEvent nicht von AWTEvent erbt.
- einfach den inhalt des listeners in eine allgemeine methode auslagern geht auch nicht, da ich von aussen keinen zugriff mehr auf die anderen Komponenten habe. und die will ich ja eigentlich verändern.

hat sonst noch jemand ideen ? ich sitz da jetzt seit zwei tagen dran und komm einfach nicht vorwärts. 🙁

danke für alle antworten!
MfG Jan
 
Das Auslagern in eine eigene Methode sollte gehen. Poste mal ein stückchen mehr Code. Sind die Components Fields oder nur in der Methode definiert? Ggf. muss man sie 'final' machen oder so...
 
hab ne Lösung gefunden ! 😀

die Components hatte ich btw schon auf final. Musste sein damit ich überhaupt einen Zugriff zulassen kann.

Die Components werden in einem Konstruktor für ein JFrame Objekt aufgebaut ohne sie in eine lokale Variable zu speichern - also sind sie nur in dem Konstruktor definiert. Und wenn ich dann die Components von aussen ansprechen wollte gabs immer den Fehler ("bla cannot be resolved or is not a field.").

Jetzt hab ich einfach lokale Variablen eingeführt und speicher die anzusprechenden Components da rein.
Wenn ich jetzt mit meiner äusseren Methode die lokalen Variablen anspreche funktioniert alles. 🙂

soll ich den entsprechenden Code noch posten oder reicht die Antwort als Lösung ?
 
Im Prinzip habe ich verstanden, das Du jetzt auf deine Komponenten zugreifen kannst, da es ja nun Membervariablen sind. Aber vielleicht solltest Du doch einen Codeausschnitt posten, da ich noch nicht wirklich nachvollziehen kannst, wie Du deinen anonymen Listener jetzt anstößt. Meine mangelhafte Fantasie sei mir verziehen.
 

Neue Themen


Zurück
Oben