2009-10-29 6 views

Antwort

7

Wenn Sie eine Kopie des Inhalts erstellen möchten, können Sie DefaultListModel.toArray verwenden, um die Daten zu erhalten und Ihre bevorzugte List Implementierung damit zu erstellen. Alternativ können Sie über ListModel.getElementAtListModel.getSize Zeiten Schleife.

Wenn Sie eine Live-Verbindung zwischen den Sammlungen statt einer Kopie möchten, verwenden Sie AbstractList:

public static List<Object> asList(final DefaultListModel model) { 
    return new AbstractList<Object>() { 
      @Override public Object get(int index) { 
       return  model.getElementAt(index); 
      } 
      ... 
    }; 
} 

Sie können Class.cast dort gleiten wollen, aber es ist ein inhärentes Problem mit Swing-Typen nicht generisch zu sein.

11
Arrays.asList(model.toArray()); 
+0

Hängt davon ab, ob Sie die Daten kopieren oder verbunden lassen möchten. –

1

Nach ye olde API, müssen Sie die elements() Methode verwenden und über sie iterieren, um sie zu einer Liste hinzufügen. DefaultListModel befindet sich nicht in derselben Hierarchie wie die normalen Collections-Klassen.

ODER verwenden Sie was jarnbjo vorgeschlagen!

Verwandte Themen