首页 > 解决方案 > 如何增加记分牌,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++;
}

标签: javafx

解决方案


据我了解,您正在尝试在按下按钮score1_0, score2_0时更新标签等。p4

如果我的理解是正确的,那么您需要在每次更新索引时调用标签文本设置器,例如当您更新index4然后score4_0.setText("" + index4 + "");每次更新时调用index4,我认为您不需要event.consume()在您的按钮处理程序中。


推荐阅读