Ich bin ein Anfänger Java-Programmierer, Java FX aus einer Vielzahl von Quellen zu lernen. In meinem Programm möchte ich eine ComboBox erstellen und die Auswahl mit der toString() - Ausgabe einer Reihe von Objekten aus einer ArrayList füllen. Hier werden Pizzabeläge als Objekt definiert. Sie werden erstellt und in einem PizzaMgr Objekt gespeichert, im Grunde eine verherrlicht Wrapper für eine Arraylist:ArrayList in Observable List für JavaFX-Programm konvertieren?
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 die Schwierigkeit ist, wenn ich möchte, dass eine ComboBox alle diese Elemente in der ArrayList von PizzaMgr auflistet. Idealerweise würde ich gerne diesen ComboBox-Konstruktor verwenden:
Das Problem? Wie extrahiert man alle ArrayList-Objekte in eine Observable List? Ich habe auf Arraylists, Observable Lists, Interfaces im Allgemeinen gelesen, aber ich kann mir nicht vorstellen, wie ich das zum Laufen bringen kann. Ich habe gelesen, dass eine ArrayList eine Sammlung ist und die Observable List eine Schnittstelle zu einer Collection sein kann, also dachte ich, ich wäre zu Hause frei. Allerdings, wenn ich versuche, den ComboBox Konstruktor zu implementieren:
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());
}
}
Ich erhalte 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 wird nicht als beobachtbare Liste gesehen.
Was mich stempelt ist: Wie kann ich meine ArrayList dem ComboBox-Konstruktor präsentieren, so dass es wie eine Observable List aussieht? Ist es eine leichte Syntax? Oder muss ich die ArrayList vorher in eine andere Datenstruktur konvertieren?
Vielen Dank, -RAO
Es funktioniert !!! So genial!!! Ich bin jetzt überglücklich, du hast keine Ahnung. Tausend Dank, das ist wirklich großartig. :) – Pete