[英]Java FXML Tableview with ArrayList
嗨,大家好我嘗試以跳躍和運行游戲,在大學我保存的數據的項目做一個得分列表Player
與屬性類的nickname
和finalScore
在ArrayList
。 我想在FXML TableView
顯示數據,但是它將不起作用,並且僅顯示任何內容。
我已經嘗試將屬性聲明為SimpleString
/ IntegerProperty
但是它沒有改變。
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);
}
}
我希望TableColumn可以顯示ArrayList
的數據,但是TableView
在此表中僅顯示“無內容”。
編輯播放器類
public Player(String nickname, int finalScore){
setNickname(nickname);
setFinalScore(finalScore);
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
void setFinalScore(int score){
finalScore = score;
}
public String getNickname(){
return nickname;
}
public int getFinalScore() {
return finalScore;
}
您可以嘗試一些更改
Nickname.setCellValueFactory(col ->new SimpleStringProperty(col.getValue().getNickName());
Score.setCellValueFactory(col ->new SimpleIntegerProperty(col.getValue().getFinalScore());
如果cellFactory
,則必須查看cellFactory
的名稱約定
我已經嘗試了您的代碼,這是我可以假定的問題:
Score.setCellValueFactory(new PropertyValueFactory<Player, Integer>("finaleScore"));
您將finalScore
輸入為finaleScore
,但沒有輸入任何值,因為這樣的屬性不存在。 但是,這不會影響“昵稱”列的值填充。 因此,我的第二個猜測是您可能尚未設置fxml文件的控制器。 請檢查您的Score.fxml代碼中是否包含以下行:
fx:controller="<your package name here >.ScoreController"
例如
<AnchorPane prefHeight="400.0" prefWidth="600.0" fx:controller="com.example.ScoreController">
<!-- other children nodes here -->
</AnchorPane>
編輯
嘗試將這些行更改為:
@FXML
public TableView table;
@FXML
public TableColumn Nickname;
@FXML
public TableColumn Score;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.