2009-10-29 11 views

Odpowiedz

7

Jeśli chcesz wykonać kopię zawartości, możesz użyć DefaultListModel.toArray, aby uzyskać dane i skonstruować z tym swoją ulubioną implementację List. Alternatywnie możesz wykonać pętlę ponad ListModel.getElementAtListModel.getSize razy.

Jeśli chcesz żywego połączenia pomiędzy zbiorami zamiast kopii, użyj AbstractList:

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

Możesz przesuwać Class.cast tam, ale jest wewnętrznym problemem rodzaje Swing nie jest nazwą rodzajową.

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

Zależy, czy chcesz skopiować dane, czy pozostawić je połączone. –

1

Według Ye Olde API, trzeba użyć metody elements() i iteracyjne nad nimi, dodając je do listy. DefaultListModel nie znajduje się w tej samej hierarchii co zwykłe klasy kolekcji.

LUB użyj tego, co zasugerował jarnbjo!

Powiązane problemy