javafx - 如何增加记分牌,java fx
问题描述
在我确定任何玩家拥有最高价值的牌后,我试图添加到记分牌中。标签不会更新。在玩家 4 播放之后,我假设游戏的其余幕后发生,即谁拥有最高牌,并更新分数。
Button p4 = new Button("Player 4");
p4.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
int n = rand.nextInt(56)+1;
//(Double.parseDouble(card.get(n).getValue()));
deckView4.setImage(cards.get((n)));
p4.setDisable(true);
array[3] = (Double.parseDouble(card.get(n).getValue()));
Suits[3] = card.get(n).getSuit();
if(array[0] > array[1] || array[0] > array[2] || array[0] > array[3]){
incrementIndex1();
}
else if(array[1] > array[2] || array[1] > array[3]) {
incrementIndex2();
}
else if(array[2] > array[3]) {
incrementIndex3();
}
else {
incrementIndex4();
}event.consume();
}
});
上面的按钮代码是这个
//creates Player1 ScoresNames
Label score1 = new Label();
score1.setText("P1 -> ");
score1.setPadding(new Insets(100, 0, 0, 0));
Label score1_0 = new Label();
score1_0.setText("" + index1 + "");
score1_0.setPadding(new Insets(100, 0, 0, 50));
//creates Player2 ScoreNames
Label score2 = new Label();
score2.setText("P2 -> ");
score2.setPadding(new Insets(99, 0, 0, 0));
Label score2_0 = new Label();
score2_0.setText("" + index2 + "");
score2_0.setPadding(new Insets(177, 0, 0, 50));
//creates Player3 ScoreName
Label score3 = new Label();
score3.setText("P3 -> ");
score3.setPadding(new Insets(98, 0, 0, 0));
Label score3_0 = new Label();
score3_0.setText("" + index3 + "");
score3_0.setPadding(new Insets(252, 0, 0, 50));
//creates Player4 ScoreName
Label score4 = new Label();
score4.setText("P4 -> ");
score4.setPadding(new Insets(97, 0, 0, 0));
Label score4_0 = new Label();
score4_0.setText("" + index4 + "");
score4_0.setPadding(new Insets(325, 0, 0, 50));
//vBox for scoresNames
VBox score = new VBox(-40);
score.getChildren().addAll(score1,score2,score3,score4);
score.setAlignment(Pos.CENTER_LEFT);
//groups 4 players together
g.getChildren().addAll(sp,sp1,score,h1,score1_0,score2_0, score3_0, score4_0, deckView, deckView2, deckView3, deckView4);
//bp.setTop(t);
bp.setCenter(g);
//bp.setLeft(tL);
bp.getChildren().addAll(createButtons(), vb1);
//bp.getChildren().add(g);
最后,这是初始化上述变量以增加分数:
int index1 = 00;
int index2 = 00;
int index3 = 00;
int index4 = 00;
private static ArrayList<Suit_Value> card = new ArrayList<Suit_Value>();
public static void main(String[] args) {
cg cgg = new cg();
cgg.readFromFile("cards");
launch();
}
private void incrementIndex1() {
index1++;
}
private void incrementIndex2() {
index2++;
}
private void incrementIndex3() {
index3++;
}
private void incrementIndex4() {
index4++;
}
解决方案
据我了解,您正在尝试在按下按钮score1_0, score2_0
时更新标签等。p4
如果我的理解是正确的,那么您需要在每次更新索引时调用标签文本设置器,例如当您更新index4
然后score4_0.setText("" + index4 + "");
每次更新时调用index4
,我认为您不需要event.consume()
在您的按钮处理程序中。
推荐阅读
- javascript - 在不破坏代码功能的情况下转换为 es6
- python - 期望用双引号括起来的属性名称:第 1 行第 2 列(字符 1)。即使所有属性都在双引号中,也会出现此错误
- azure-cosmosdb - 更新 cosmos db 中列的所有值的数据类型
- reactjs - useEffect 无限循环 WITH 空依赖数组
- android - 如何在bottomSheet关闭后更新fragmentStateAdapter
- python - 州和城市下拉菜单
- ios - iOS:将用户从一个 URL 重定向到另一个 URL 的 VPN
- android - Flowable.fromIterable 永远不会结束。它永远不会到达 .subscribe() - Android RxJava
- python - 如何获取只有唯一数字的列表?(Python)
- python - python:从字典中的值列表中返回完全匹配