带有ArrayList的Java FXML表视图
嘿,伙计们,我正在为大学里的一个项目做一个跳转和跑步游戏的计分表。我正在用带有ArrayList的Java FXML表视图,java,javafx,Java,Javafx,嘿,伙计们,我正在为大学里的一个项目做一个跳转和跑步游戏的计分表。我正在用昵称和finalScore属性将玩家类的数据保存在数组列表中。我想在FXMLTableView中显示数据,但它不起作用,只显示没有内容 我已经尝试将属性声明为SimpleString/IntegerPropertys,但它没有改变 public class ScoreController implements Initializable { @FXML private TableView<Playe
昵称和finalScore
属性将玩家
类的数据保存在数组列表中。我想在FXMLTableView
中显示数据,但它不起作用,只显示没有内容
我已经尝试将属性声明为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中设置了控制器。我已编辑了答案以尝试其他内容。仍然没有差异,但感谢您的努力:)