我是一名半初學Java程序員,從各種來源學習Java FX。在我的程序中,我想創建一個ComboBox,並使用ArrayList中的一系列對象的toString()輸出填充選項。在這裏,比薩澆頭被定義爲一個對象。他們創建並存儲在一個PizzaMgr對象,基本上是一個華而不實的包裝爲一個ArrayList:將ArrayList轉換爲JavaFX程序的可觀察列表?
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;
}
}
到目前爲止,一切都很好。但是我碰到的問題是我想要一個ComboBox來列出PizzaMgr的ArrayList中的所有項目。理想情況下,我想使用此ComboBox構造函數:
ComboBox<T>(ObservableList<T> items)
問題?如何將所有ArrayList項目提取到可觀察列表中?我一直在閱讀Arraylists,Observable Lists,一般的接口,但我無法弄清楚如何使這個工作。我讀過一個ArrayList是一個Collection,Observable List可以作爲一個Collection的接口,所以我認爲我是免費的。然而,當我嘗試實施了ComboBox構造函數:
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());
}
}
我得到的編譯器錯誤:
Menu.java:18: error: incompatible types: ArrayList<Topping> cannot be converted to ObservableList<Topping>
ComboBox<Topping> topMenu = new ComboBox<Topping>(m.getList());
^
所以,很顯然我的ArrayList中不被看作是可觀察的名單。
什麼殘留下來的是:我怎樣才能將我的ArrayList呈現給ComboBox構造函數,使它看起來像一個Observable List?這是一種輕微的語法嗎?或者我必須提前將ArrayList轉換爲另一個數據結構?
非常感謝, -RAO
它的工作原理!好棒!!!我現在正在登月,你不知道。萬分感謝,這真的很棒。 :) – Pete