簡體   English   中英

具有ArrayList的Java FXML Tableview

[英]Java FXML Tableview with ArrayList

嗨,大家好我嘗試以跳躍和運行游戲,在大學我保存的數據的項目做一個得分列表Player與屬性類的nicknamefinalScoreArrayList 我想在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM