Konvertieren ArrayList zu Beobachten-Liste für JavaFX-Programm?

Ich bin ein semi-Anfänger Java Programmierer, Java zu lernen FX aus einer Vielzahl von Quellen. In meinem Programm möchte ich eine ComboBox und füllen Sie die Auswahl mit der toString() Ausgabe einer Serie von Objekten aus einer ArrayList. Hier, pizza-topping sind definiert als ein Objekt. Sie werden erstellt und gespeichert in einem PizzaMgr Objekt, im Grunde eine glorifizierte wrapper für eine ArrayList:

public class Topping{

  private String name;

  public Topping(String a){
    this.name=a;
  }
  public String toString(){
    return this.name;
  }
}

//=================================================

import java.util.ArrayList;

public class PizzaMgr{

  private ArrayList<Topping> OrderedToppings;

  public PizzaMgr(){
      OrderedToppings = new ArrayList<Topping>();
      OrderedToppings.add(new Topping("Pepperoni"));
      OrderedToppings.add(new Topping("Mushrooms"));
      OrderedToppings.add(new Topping("Onions"));
  }

  public ArrayList<Topping> getList(){
      return OrderedToppings;
  }
}

So weit, So gut. Aber das Problem ich schlagen, wenn ich will eine ComboBox, um eine Liste aller dieser Elemente in der PizzaMgr die ArrayList. Im Idealfall würde ich gerne das Kombinationsfeld Konstruktor:

ComboBox<T>(ObservableList<T> items)

Das problem? Wie extrahieren Sie alle ArrayList-Objekte in eine Beobachtbare Liste? Ich habe gelesen, bis auf Arraylists, Beobachtbare Listen, Schnittstellen, im Allgemeinen, aber ich kann nicht herausfinden, wie diese zu arbeiten. Ich habe gelesen, dass eine ArrayList ist eine Collection, und das Beobachtbare Liste kann eine Schnittstelle zu einer Sammlung, so dass ich dachte, ich war frei Haus. Jedoch, wenn ich versuche zu implementieren, die die ComboBox-Konstruktor:

import javafx.scene.control.*;

public class Menu{

  public static void main(String[] args){
      PizzaMgr m = new PizzaMgr();
      ComboBox<Topping> topMenu = new ComboBox<Topping>(m.getList());
  }
}

Bekomme ich den compiler-Fehler:

Menu.java:18: error: incompatible types: ArrayList<Topping> cannot be converted to ObservableList<Topping>
            ComboBox<Topping> topMenu = new ComboBox<Topping>(m.getList());
                                                                       ^

So offensichtlich meine ArrayList gesehen ist nicht als eine Beobachtbare Liste.

Was stümpfe mich ist: Wie kann ich meine ArrayList zu den ComboBox-Konstruktor, so dass es scheinen, wie eine Beobachtbare Liste? Ist es ein syntax-leicht-der-hand? Oder muss ich die konvertieren die ArrayList in eine andere Datenstruktur im Voraus?

Vielen Dank,
-RAO

InformationsquelleAutor Pete | 2016-04-14

Schreibe einen Kommentar