Name des markierten Listenelements als String ausgeben

programer85

Mitglied
Hallo!
Ich habe schon das ganze Internet durchsucht
aber ich finde einfach nicht die richtige Antowrt
vielleicht liegt es auch an mir ^^
also mein Problem ist folgendes
Ich habe eine Liste
und von dieser Liste möchte ich gerne
das markierte Element, also das war gerade angeklickt ist
durch eine void.methode (wenn man zum beispiel auf einen button klickt)
den Namen in einer String-Variable zurücklgene lassen
Ich habe es schon so versucht

Code:
DefaultListModel listModel = new DefaultListModel ();
JList liste = new JList(listModel);

liste..setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

int index = liste.getSelectedIndex();
String name = listModel.elementAt(index).toString();
(so steht es natürlich nicht in meinem Quellcode, habe nur die sachen hier gepostet, die für diese sache relevant sind!)


das Kompilieren klappt auch einwandfrei
nur beim ausführen kommen, wenn ich dann auf diesen Button klicke,
tausende Errormeldungen im Meldungs-log

Kann mir wer sagen, woran das liegt
und vielleicht eine Lösungsvariante zeigen?!
Wäre sehr nett =)

Liebe Grüße. p85
 
Moin,

eventuell könntest Du mal die Fehlermeldung posten.
Dann könnte man direkt sehen, wo das Problem liegt ;-)

Gruß,
Xan
 
okay...

Code:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1 >= 1
	at java.util.Vector.elementAt(Vector.java:427)
	at javax.swing.DefaultListModel.elementAt(DefaultListModel.java:247)
	at Adressbuch2$2.actionPerformed(Adressbuch2.java:130)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.Component.processMouseEvent(Component.java:6216)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
	at java.awt.Component.processEvent(Component.java:5981)
	at java.awt.Container.processEvent(Container.java:2041)
	at java.awt.Component.dispatchEventImpl(Component.java:4583)
	at java.awt.Container.dispatchEventImpl(Container.java:2099)
	at java.awt.Component.dispatchEvent(Component.java:4413)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4556)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4220)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4150)
	at java.awt.Container.dispatchEventImpl(Container.java:2085)
	at java.awt.Window.dispatchEventImpl(Window.java:2475)
	at java.awt.Component.dispatchEvent(Component.java:4413)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
 
Moin,

schaut wohl so aus, als würdest Du ein Array-Index überschreiten.
Ich bin mir jetzt nicht genau sicher, aber es kann sein, dass die Indexe der JList bei 1 beginnen, die vom Model aber bei 0.
Kannst das ja mal entsprechend abändern und testen.

Gruß,
Xan
 
Hmm also ich hätte es genauso wie du gemacht und eigentlich sollte das auch funktionieren. Kannst du eventuell ein wneig mehr Quellcode posten? Nehme an du hast irgendwo ein Event. Wenn ja zeig das mal...

Edit: Ich hab mal ein wenig gegooglet und bin schließlich darauf gestoßen:
http://openbook.galileocomputing.de/javainsel/java-16.htm#t316
Die Fehlermeldung finde ich sieht deiner ziemlich ähnlich ;)

Ansonsten könntest du auch etwas in die Richtung probieren:
Java:
System.out.println((String)myList.getSelectedValue());
 
Zuletzt bearbeitet:
Ehm das Problem ist, ich schreibe zur Zeit an einem Adressbuch
und der Quellcode zieht sich schon über 500 Zeilen...
Es wäre glaube ich nicht gerade angebracht, ihn komplett hier zu posten!

und die vorgeschlagene variante klappt leider auch nicht -.-
könnte es vielleicht auch an etwas anderes als an einem fehler im quellcode liegen?
beispielsweise an einer flashcne Java-Version oder etwas in der Art?!
 
Moin,

nein, das sollte nichts damit zu tun haben.
Die drei Zeilen sagen eindeutig aus, dass es ein Problem mit der Zuordnung des ausgewählten Eintrags für das entsprechende Listen-Element gibt:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1 >= 1
at java.util.Vector.elementAt(Vector.java:427)
at javax.swing.DefaultListModel.elementAt(DefaultListModel.java:247)

Zeig mal bitte den Inhalt Deines ListModels.

Gruß,
Xan
 
Also wie schon gesagt habe ich ein Adressbuch gemacht,
hierbei soll der Benutzer zu Anfang zwischen Profilen wählen können
Dabei soll er die Namen der Profile jedesmal in einer extra Datei hinterlegen
aus der er jedes Mal wenn das Programm startet
alle Profile herausliest und einzeln in die Liste einfügt
so hier:
Code:
File profil_liste = new File("profil_liste.txt");

try{
BufferedReader br = new BufferedReader(new FileReader(profil_liste));

    String line;

    while ((line = br.readLine()) != null) {
      listModel.addElement(line);
    }

    br.close();
 } catch(IOException f) {

 }
Das ist im Grunde genommen der Inhalt meines listModels...
 

Neue Beiträge

Zurück