Как увеличить табло, Java FX - PullRequest
0 голосов
/ 26 ноября 2018

Я пытаюсь добавить в табло после того, как определю, у какого игрока есть карта с наибольшим достоинством.Ярлык не будет обновляться.После того, как игрок 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++;
}

1 Ответ

0 голосов
/ 26 ноября 2018

Насколько я понимаю, вы пытаетесь обновить ярлык score1_0, score2_0 и т. Д. При нажатии кнопки p4.

Если мое понимание верно, то вам нужно вызывать установщики текста метки каждый раз, когда обновляется индекс, например, когда вы обновляете index4, затем вызывайте score4_0.setText("" + index4 + ""); каждый раз, когда обновляется index4, и я не думаю, чтовам нужно event.consume() в вашем обработчике кнопок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...