Java 在表JFX中设置值

Java 在表JFX中设置值,java,object,javafx,tableview,Java,Object,Javafx,Tableview,我试图在一个表中设置一个值,我正在用我的玩家类的玩家列表填充这个表,我试图在表中设置分数值,但很困难。我不知道如何在表中设置值。(每个球员有10分)。我们将非常感谢您的帮助,并提前表示感谢 球员级别: import java.util.concurrent.atomic.AtomicInteger; public class Player { public static final AtomicInteger id = new AtomicInteger(0); public

我试图在一个表中设置一个值,我正在用我的玩家类的玩家列表填充这个表,我试图在表中设置分数值,但很困难。我不知道如何在表中设置值。(每个球员有10分)。我们将非常感谢您的帮助,并提前表示感谢

球员级别:

import java.util.concurrent.atomic.AtomicInteger;

public class Player {
    public static final AtomicInteger id = new AtomicInteger(0);
    public int playerID;
    public String name;
    public String scoreString;
    private String preference;
    private String barriers;
    private String[] scores ;
    private int roundtotal;
    private int total ;

public Player(){
    this.playerID = id.incrementAndGet();
    this.name = "";
    this.preference = "Left";
    this.barriers = "Yes";
    this.scores = new String[11] ;
}

public Player( int playerID, String Name, String preference, String barriers) {
    this.playerID = playerID;
    this.name = Name;
    this.preference = preference;
    this.barriers = barriers;
    this.scores = new String[11] ;

}
public int getPlayerID(){ return playerID; }
public void setPlayerID() {this.playerID = playerID;}
public String getName() {
    return name;
}
public void setName(String Name) {
    this.name = Name;
}

public String getPreference() {
    return preference;
}

public void setPreference(String preference) {
    this.preference = preference;
}

public String getBarriers() {
    return barriers;
}

public void setBarriers(String barriers) {
    this.barriers = barriers;
}

public void setScore(int turn, int score1, int score2) {
    String scoreString = score1 + "/" + score2;
    System.out.println(scoreString);
    roundtotal = score1 + score2;
    total = total + roundtotal;
    scores[turn] = scoreString;
}
public String getScore(int whichScore) {
    return scores[whichScore] ;
}
public int getTotal() {
    return total ;
}
public String getScoreString(){
    return scoreString;
}
@Override
public String toString () {
    return "Player{" +
            "id='" + playerID + '\'' +
            "Name='" + name + '\'' +
            ", Preference='" + preference + '\'' +
            ", barrires=" + barriers + '\'' +
            ", S1=" + getScore(1) + '\'' +
            ", S2=" + getScore(2) + '\'' +
            ", S3=" + getScore(3) + '\'' +
            ", S4=" + getScore(4) + '\'' +
            ", S5=" + getScore(5) + '\'' +
            ", S6=" + getScore(6) + '\'' +
            ", S7=" + getScore(7) + '\'' +
            ", S8=" + getScore(8) + '\'' +
            ", S9=" + getScore(9) + '\'' +
            ", S10=" + getScore(10) + '\'' +
            ", Total =" + total +
            '}';
}
}
表FXML:

<TableView fx:id="scoreboard" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="1">
          <columns>
            <TableColumn fx:id="nameCol" prefWidth="150.0" resizable="false" text="Player Name">
              <cellValueFactory>
                  <PropertyValueFactory property="name" />
              </cellValueFactory>
            </TableColumn>
            <TableColumn fx:id="scores1col" prefWidth="70.0" resizable="false" text="1">
              <cellValueFactory>
                  <PropertyValueFactory property="scores1col" />
              </cellValueFactory>
            </TableColumn>
              <TableColumn fx:id="score2col" prefWidth="70.0" resizable="false" text="2">
                  <cellValueFactory>
                      <PropertyValueFactory property="score2col" />
                  </cellValueFactory>
              </TableColumn>
              <TableColumn fx:id="s3" prefWidth="70.0" resizable="false" text="3">
                  <cellValueFactory>
                      <PropertyValueFactory property="getScore(3)" />
                  </cellValueFactory>
              </TableColumn>
              <TableColumn fx:id="s4" prefWidth="70.0" resizable="false" text="4">
                  <cellValueFactory>
                      <PropertyValueFactory property="getScore(4)" />
                  </cellValueFactory>
              </TableColumn>
              <TableColumn fx:id="s5" prefWidth="70.0" resizable="false" text="5">
                  <cellValueFactory>
                      <PropertyValueFactory property="getScore(5)" />
                  </cellValueFactory>
              </TableColumn>
              <TableColumn fx:id="s6" prefWidth="70.0" resizable="false" text="6">
                  <cellValueFactory>
                      <PropertyValueFactory property="getScore(6)" />
                  </cellValueFactory>
              </TableColumn>
              <TableColumn fx:id="s7" prefWidth="70.0" resizable="false" text="7">
                  <cellValueFactory>
                      <PropertyValueFactory property="getScore(7)" />
                  </cellValueFactory>
              </TableColumn>
              <TableColumn fx:id="s8" prefWidth="70.0" resizable="false" text="8">
                  <cellValueFactory>
                      <PropertyValueFactory property="getScore(8)" />
                  </cellValueFactory>
              </TableColumn>
              <TableColumn fx:id="s9" prefWidth="70.0" resizable="false" text="9">
                  <cellValueFactory>
                      <PropertyValueFactory property="getScore(9)" />
                  </cellValueFactory>
              </TableColumn>
              <TableColumn fx:id="s10" prefWidth="70.0" resizable="false" text="10">
                  <cellValueFactory>
                      <PropertyValueFactory property="getScore(10)" />
                  </cellValueFactory>
              </TableColumn>
              <TableColumn fx:id="totalCol" prefWidth="85.0" resizable="false" text="Total">
                  <cellValueFactory>
                      <PropertyValueFactory property="total" />
                  </cellValueFactory>
              </TableColumn>
          </columns>
           <GridPane.margin>
              <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
           </GridPane.margin>
        </TableView>

在控制器中,您可以(假设列的定义类型正确)执行以下操作


对于其他列也是如此。

为什么不使用控制器类?我使用的是控制器类,是否可以通过该类更新值?请阅读文档:很明显,作为属性名提供的字符串将不起作用。您需要自己在控制器中实现单元格值工厂。定义为正确类型是什么意思?(使用FXML文档)?@MorganChorlton否,在控制器中。应该是
TableColumn
。最好放在哪里?“我已经创建了一个包含所有这些内容的类,有更好的方法吗?”MorganChorlton我不明白这个问题。如果你是这样问的,我发布的代码会进入控制器。哦,是的,对不起,现在可以了,谢谢你的帮助,:)
scores1col.setCellValueFactory(cellData -> 
    new SimpleIntegerProperty(cellData.getValue().getScore(0)));