Java 在表JFX中设置值
我试图在一个表中设置一个值,我正在用我的玩家类的玩家列表填充这个表,我试图在表中设置分数值,但很困难。我不知道如何在表中设置值。(每个球员有10分)。我们将非常感谢您的帮助,并提前表示感谢 球员级别: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
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)));