JList + ListDataListener

dadom110

Erfahrenes Mitglied
Guten tag zusammen,

will eine JList erstellen, die wenn man einen Eintrag makiert, mir die Stelle zurückgibt, dessen Eintrag makiert wurde.

Erstelle also meine Liste, mit Einträgen aus einem String Array:

Code:
JList liste=new JList(data);
liste.setBounds(400,20,800,250);
frame.getContentPane().add(liste);
frame.repaint();

Das klappt auch so wunderbar, nun das mit der Makierung, also wenn ich einen Eintrag makiere will ich,die Stelle als Rückgabewert, damit ich damit weiter arbeiten kann.
So weit ich das gelesen habe, brauch ich dazu nen ListDataListener?! Hab mich daran versuch so aufzubauen wie ein WindowListender oder ActionListener und hab ihm alle Funktionen gegeben die er unbedintg haben wollte..

Code:
ListDataListener LDL = new ListDataListener()
	{
		public void intervalRemoved(ListDataEvent ewe){}
		public void contentsChanged(ListDataEvent ewe){}
		public void intervalAdded(ListDataEvent ewe){}
         }

Nun war ich mir nicht sicher, wie ich meinen Rückgabewert bekomme, hab ne Funktion gefunden die: getSelectedIndex(), die hab ich da oben dran geschustert (also public void getSelectedIndex(){} ) Wenn ich nun zB mit System.out.println den Int Wert ausgeben lassen würde wollen, wie stell ich das an ? Wo muss das rein? Wie adde ich den Listener zu der Liste? ( lst_fragen.add(LDL); << geht nicht und eine spezielle für dien ListDataListener gibt es nicht...oder bin ich ganz auf dem Holzweg ;) ?

Mfg
Dom
 
Hallo,
also ein möglichkeit bietet der ListSelectionListener
Code:
import java.util.Vector;

import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class list extends JFrame {

	JList list = null;
	Vector data = new Vector();
        int index = 0;
	public list(){
		data.add("hallo");
		data.add("du");
		data.add("Liste");
		list = new JList(data);
	
		
		list.addListSelectionListener(new ListSelectionListener() {
		
			public void valueChanged(ListSelectionEvent arg0) {
				index = list.getSelectedIndex();
				System.out.println(index);
		
			}
		
		});
		
		this.getContentPane().add(list);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.pack();
		this.setVisible(true);
		
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new list();
		

	}

}
momentan gibt er mir den index doppelt aus, warum weiss ich auch nicht genau :| (evt, ist es wegen einem MouseListener(click und release...)
wenn du den index nun abspeichern möchtest kannst du einfach eine externe Variable definieren und damit weiter arbeiten...
mfg
elmato
 
Tach
Schau dir mal den Listselectionlistener an.

Ahhhh.....Sorry hab den anderen Post zu spät gesehen.
 
Zuletzt bearbeitet:
Zurück