# JList mit DefaultListModel und listener



## Murtie (27. Dez 2011)

Hi, ich habe ein Problem mit dem Listener einer JList.


```
private void list_UnitsValueChanged(javax.swing.event.ListSelectionEvent evt) 
   {  
        int i = list_Units.getSelectedIndex();
        System.out.println(i);
    }
```

Als Ergebnis erhalte ich immer -1. Da ich der JList ein "DefaultListModel model" zugewiesen habe,
kriege ich jetzt nicht mehr die Indexnummer das selektierten Objekts. Muss ich dem DefaultListModel 
den ActionListener zuweisen, und wenn ja, wie mach ich das?

Vielen Dank


----------



## eRaaaa (27. Dez 2011)

Das hat nichts mit dem DefaultListModel zu tun, das geht damit genau so, da ist was anderes kaputt 

Sicher dass das die richtige JList ist und du der auch das richtige Model zugewiesen hast? 

Ein kleines Beispiel(Code) würde helfen....


----------



## Murtie (27. Dez 2011)

So, das müsste alles sein


```
// Im header
private javax.swing.JList list_Units;
private DefaultListModel model = new DefaultListModel();

//IniComponents von Netbeans erstellt
list_Units = new javax.swing.JList();

        list_Units.setFont(resourceMap.getFont("list_Units.font")); // NOI18N
        list_Units.setModel(model);
        list_Units.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        list_Units.setName("list_Units"); // NOI18N
        list_Units.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
            public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
                list_UnitsValueChanged(evt);
            }
        });
        sp_Units.setViewportView(list_Units); //Das ist eine ScrollPane
```


----------



## eRaaaa (27. Dez 2011)

Und was soll man damit anfangen können?

```
public static void main(String[] args) throws Exception {
		JFrame frame = new JFrame();
		JPanel panel = new JPanel();
		DefaultListModel model = new DefaultListModel();
		model.addElement("Hallo");
		model.addElement("Welt");
		final JList list = new JList(model);
		list.addListSelectionListener(new ListSelectionListener() {
			@Override
			public void valueChanged(ListSelectionEvent e) {
				System.out.println(list.getSelectedIndex());
			}
		});
		panel.add(list);
		frame.add(panel);

		frame.pack();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
	}
```
Funktioniert, kann man nachvollziehen, kann jeder ausführen, kann man drüber diskutieren. Kann man bei deinen zwei Zeilen nicht, da wird ja nicht einmal eine JList erstellt.

[edit]


> So, jetzt müsste alles wichtige dabei sein


Nö, dein Model ist z.B. noch leer...vergleiche doch mal mit meinem Beispiel, was ist bei dir anders? 
[/edit]


----------



## Murtie (27. Dez 2011)

Ich habe doch Editiert, dass ich ausversehen zufrüh auf antworten geklickt habe und es
nacheditieren werden 
So, jetzt müsste alles wichtige dabei sein

Och man, ich hatte noch irgendwo:
list_Units = new JList(model);
nochmal zu stehen... 
Habe das entfernt und jetzt gehts natürlich auch...

Danke ^^


----------

