Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有ArrayList的Java FXML表视图_Java_Javafx - Fatal编程技术网

带有ArrayList的Java FXML表视图

带有ArrayList的Java FXML表视图,java,javafx,Java,Javafx,嘿,伙计们,我正在为大学里的一个项目做一个跳转和跑步游戏的计分表。我正在用昵称和finalScore属性将玩家类的数据保存在数组列表中。我想在FXMLTableView中显示数据,但它不起作用,只显示没有内容 我已经尝试将属性声明为SimpleString/IntegerPropertys,但它没有改变 public class ScoreController implements Initializable { @FXML private TableView<Playe

嘿,伙计们,我正在为大学里的一个项目做一个跳转和跑步游戏的计分表。我正在用
昵称
finalScore
属性将
玩家
类的数据保存在
数组列表中。我想在FXML
TableView
中显示数据,但它不起作用,只显示没有内容

我已经尝试将属性声明为
SimpleString
/
IntegerProperty
s,但它没有改变

public class ScoreController implements Initializable {

    @FXML
    private TableView<Player> table;
    @FXML
    private TableColumn<Player, String> Nickname;
    @FXML
    private TableColumn<Player, Integer> Score;

    // Creating Observable Array List
    private ObservableList<Player> data = FXCollections.observableArrayList();

    // Set up the Scene
    private Parent scoreList;

    void setUp() throws Exception{
        scoreList = FXMLLoader.load(getClass().getResource("/fxml/Score.fxml"));
        App.scoreList = new Scene(scoreList,800,500);
    }


    // Adding data to the Observable List and setting Column Factories
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        data.add(new Player("Chris", 11));
        data.add(new Player("Agil", 12));
        Nickname.setCellValueFactory(new PropertyValueFactory<Player, String>("nickname"));
        Score.setCellValueFactory(new PropertyValueFactory<Player, Integer>("finaleScore"));
        table.setItems(data);
    }
}

你可以尝试一些改变

 Nickname.setCellValueFactory(col ->new SimpleStringProperty(col.getValue().getNickName());
 Score.setCellValueFactory(col ->new SimpleIntegerProperty(col.getValue().getFinalScore());

如果工作正常,您必须查看
cellFactory的名称约定

您可以尝试一些更改

 Nickname.setCellValueFactory(col ->new SimpleStringProperty(col.getValue().getNickName());
 Score.setCellValueFactory(col ->new SimpleIntegerProperty(col.getValue().getFinalScore());

如果有效,您必须查看
cellFactory的名称约定

我已经试用了您的代码,这就是我可以假定的问题:

Score.setCellValueFactory(新的PropertyValueFactory(“FinaleCore”)

您将
finalScore
错误键入为
finalScore
,因为这样的属性不存在,所以不会返回任何值。然而,这并不影响列昵称值的填充。所以我的第二个猜测是,您可能没有为fxml文件设置控制器。请检查您的Score.fxml代码中是否有以下行:

fx:controller=“.ScoreController”
e、 g


编辑

尝试将这些行更改为:

    @FXML
    public TableView table;
    @FXML
    public TableColumn Nickname;
    @FXML
    public TableColumn Score;


我已经试用了您的代码,我可以认为这就是问题所在:

Score.setCellValueFactory(新的PropertyValueFactory(“FinaleCore”)

您将
finalScore
错误键入为
finalScore
,因为这样的属性不存在,所以不会返回任何值。然而,这并不影响列昵称值的填充。所以我的第二个猜测是,您可能没有为fxml文件设置控制器。请检查您的Score.fxml代码中是否有以下行:

fx:controller=“.ScoreController”
e、 g


编辑

尝试将这些行更改为:

    @FXML
    public TableView table;
    @FXML
    public TableColumn Nickname;
    @FXML
    public TableColumn Score;


向我们展示类
Player
我认为您将get/setter命名错误,很可能是-PropertyValueFactory使用不当(正如@Raw已经指出的)。无论如何,要获得调试方面的帮助,您必须提供一个示例来演示问题。与您的问题无关:请学习java命名约定并坚持这些约定向我们展示类
Player
,我认为您将get/setter命名错误,很可能是-PropertyValueFactory的不当使用(正如@Raw已经指出的)。无论如何,要获得调试方面的帮助,您必须提供一个示例来演示问题。与您的问题无关:请学习java命名约定并坚持使用它们谢谢您的帮助但不幸的是它仍然不起作用我已经在FXML中设置了控制器。我已经编辑了答案以尝试其他内容。仍然没有区别但感谢您的努力:)谢谢您的帮助但不幸的是它仍然不起作用我已在我的FXML中设置了控制器。我已编辑了答案以尝试其他内容。仍然没有差异,但感谢您的努力:)