[JAVA] JList Item hinzufügen

07/05/2013 15:30 Zunft#1
Hallo zusammen,

Ich habe folgendes Problem:

Ich möchte einer jList Einträge hinzufügen. Habe es mit DefaulListModel probiert:

Code:
DefaultListModel listmodel = new DefaultListModel();
[...]
jList1 = new javax.swing.JList(listmodel);
[...]
jList1.setModel(new javax.swing.AbstractListModel() {
            String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" };
            public int getSize() { return strings.length; }
            public Object getElementAt(int i) { return strings[i]; }
        });
// Dieser Code wurde von NetBeans automatisch erzeugt, weiß nicht ob Ihr was damit anfangen könnt ;)
[...]
private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        listmodel.addElement("test");
    }
[...]
Allerdings funktioniert es nicht...
Schonmal vielen Dank für die Hilfe.

Gruß
Zunft
07/05/2013 22:28 dowhile#2
Du rufst nach dem Konstruktor "setModel()" auf. Damit übergibst du wieder ein neues Model (anonyme Klasse), die Liste verwendet ergo listmodel nicht mehr.

Schau dir in Netbeans unter den Eigenschaften der Liste das Attribut "model" an und lösche den Standardwert raus. Ggf. kannst du dort auch dein eigenes Model direkt setzen "lassen" (also anstatt es, wie momentan, im Konstruktor setzen zu lassen).

Alternativ kannst du dein eigenes Model nach dem Aufruf von initComponents() manuell mit setModel setzen. Das Standard-Model vom Netbeans-Form-Editor würde ich aber trotzdem raus löschen.
07/06/2013 22:01 hallo6#3
DefaultListModel listmodel = new DefaultListModel();
[...]
jList1 = new javax.swing.JList(listmodel);
[...]
jList1.setModel(new javax.swing.AbstractListModel() {
String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" };
public int getSize() { return strings.length; }
public Object getElementAt(int i) { return strings[i]; }
});
// Dieser Code wurde von NetBeans automatisch erzeugt, weiß nicht ob Ihr was damit anfangen könnt ;)
[...]
private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {
listmodel.addElement("test");
jList1.setModel(listmodel);
}
[...]