gpt4 book ai didi

java - 将数组列表添加到我的 javafx 程序中的选择框

转载 作者:行者123 更新时间:2023-12-01 19:33:55 25 4
gpt4 key购买 nike

所以我一直在尝试将数组列表传输到我在 JavaFX 类中创建的选择框。但是,我在加载项目名称时遇到了一些问题。我创建了一个名为 Item 的单独类,其中包含我创建的构造函数,并且创建了一个返回项目名称的方法。但是,我想将项目属性传输到我的选择框,但只显示项目名称。

public class Item {


private final String name, description;
private boolean spoiled, buyable;
private final int price, nutrition;
private final boolean isFood;

private double hoursToRot = 15;

public Item() {
this.name = null;
this.description = null;
this.price = 0;
this.nutrition = 0;
this.isFood = false;
}
public Item(String name, String description, int price, boolean buyable, boolean isFood, int nutrition)
{

this.description = description;
this.name = name;
this.price = price;
this.buyable = buyable;
this.isFood = isFood;
this.nutrition = nutrition;

}
public String getName()
{
return name;
}
...

如您所见,这是我的项目类别

public class Game 
{
Item item = new Item();
public ArrayList<Item> supermarkedItems = new ArrayList();
public void supermarkedItems() {


Item meat, milk, cake, rice, ryebread;

milk = new Item("milk", "This is milk!", 14, true, true, 20);
meat = new Item("meat", "This is meat!", 35, true, true, 30);
cake = new Item("cake", "This is a whole cake!", 60, true, true, 50);
rice = new Item("rice", "This is 500g of white rice!", 25, true, true, 50);
ryebread = new Item("ryebread", "This is a loaf of ryebread", 25, true, true, 25);

supermarkedItems.add(meat);
supermarkedItems.add(milk);
supermarkedItems.add(cake);
supermarkedItems.add(rice);
supermarkedItems.add(ryebread);



}

public ArrayList<Item> getsupermarkedList() {
return supermarkedItems;
}
public String getItemNames () {
return item.getName();
}
...

这是我的游戏类(class)。在我的 javafx 程序中,我创建了一个单例类来将我的内容传输到我的 JavaFX 类。

public class OrderTableController implements Initializable {

Game g1 = Game.getInstance();
@FXML
private ChoiceBox<Item> cbItems = new ChoiceBox<Item>(FXCollections.observableArrayList(g1.getsupermarkedList()));
@Override
public void initialize(URL url, ResourceBundle rb) {

cbItems.getItems().addAll(g1.getItemNames());


...

但是由于某种原因,我确实无法将我的 Items 传输到我在 choicebox 类中创建的新 observableArrayList。 These are the errors i receive

最佳答案

您收到错误是因为您尝试将 String 类型的对象添加到应包含 Item 类型的列表中。您只能添加 Item 类或扩展类 Item 的对象。

要选择要在 ChoiceBox 中显示的对象文本,您需要重写类中的 toString()

您可以将其添加到 Item 类中以在 ChoiceBox 中显示名称:

@Override
public String toString() {
return name;
}

您可以通过执行以下操作将项目添加到 ChoiceBox:

cbItems.getItems().addAll( g1.getsupermarkedList() );

关于java - 将数组列表添加到我的 javafx 程序中的选择框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59238115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com