JavaFX, Label won't appearand Button's wont show. ToString Method won't work. (UNO GAME)

Viewed 46

I have never been so lost in a program in my life.

How in the world do I make the following appear? keep in mind this is a project for my university so I am not allowed to use SceneBuilder.

First I need to place buttons when distributing the Cards (Made a button to distribute the cards). I make an object of the My Game class and it distributes by calling the constructor.

Here is the Constructor

 public Game(ArrayList<Player> players)//9.2 description
    {
        this.deck = new ArrayList<Card>();
        this.players = new ArrayList<Player>();
        this.players = players;
        this.currentDrawn = 0;
        buildDeck();
        distribute();
        discardPile.add(deck.remove(deck.size() - 1));
    }

after it calls I add 7 new buttons (The method distribute(); distributes for each player 7 cards)

when this happens it shows the button as a reference to the object, not the name, I Override ToString Method but it just won't work.

I also cannot figure out how to make those new buttons have an effect when I click them, considering they are not declared like I usually declare them.

Here is the part for adding the cards in JavaFX

//Cards
        Button distributeCards = new Button("distribute cards");
        Button playerCards = new Button();

        String name = username.getText();
        this.userCards = players.get(0).getHand();

        Label player1Name = new Label(username.getText());
        Label player2Name = new Label("Player 2");
        Label player3Name = new Label("Player 3");
        Label player4Name = new Label("Player 4");

        HBox rootForgameScene = new HBox(distributeCards);
        rootForgameScene.getChildren().add(player1Name);

        this.gameScene = new Scene(rootForgameScene);
        player2Name.setAlignment(Pos.CENTER_LEFT);
        player3Name.setAlignment(Pos.CENTER_RIGHT);
        player4Name.setAlignment(Pos.TOP_CENTER);

        distributeCards.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent actionEvent) {
                //new Game(players).distribute();
                    distributeCards.setVisible(false);

                    Game game = new Game(players);
                    game.getLatestDiscard();

                    Label discardPileLabel = new Label(game.getLatestDiscard().toString());
                    rootForgameScene.getChildren().add(new Label(game.getLatestDiscard().toString()));
                    rootForgameScene.setPadding(new Insets(10));

                    System.out.println(discardPileLabel.getText());

                    if (players.size() == 2)
                        player2Name.setAlignment(Pos.CENTER_LEFT);
                    else if(players.size() == 3) {
                        player2Name.setAlignment(Pos.CENTER_LEFT);
                        player3Name.setAlignment(Pos.CENTER_RIGHT);
                    }
                    else if(players.size() == 4) {
                        player4Name.setAlignment(Pos.TOP_CENTER);
                        player3Name.setAlignment(Pos.CENTER_RIGHT);
                    }
                    for(int i = 0; i < players.get(0).getHand().size(); i++){
                        rootForgameScene.getChildren().add(new Button(((userCards).toString())));
                        discardPileLabel.setAlignment(Pos.CENTER);
                        System.out.println(playerCards);
                    }
                    Button discardPileButton = new Button(game.getLatestDiscard().toString());
                    discardPileLabel.setAlignment(Pos.CENTER);
                    Button EndTurn = new Button("End Turn");
                    EndTurn.setAlignment(Pos.BOTTOM_CENTER);
                    rootForgameScene.getChildren().add(discardPileButton);
                    rootForgameScene.getChildren().add(EndTurn);
            }
        });

And here is the ToString Method



    public String toString() {
        for (int i = 0; i < userCards.size(); i++){
            if(userCards.get(i) instanceof NumberCard){
                if (userCards.get(i).getColor().equals(Color.BLUE))
                    return "BLUE " + ((NumberCard) userCards.get(i)).getNumber();
                else if(userCards.get(i).getColor().equals(Color.RED))
                    return "RED " + ((NumberCard) userCards.get(i)).getNumber();
                else if(userCards.get(i).getColor().equals(Color.GREEN))
                    return "GREEN " + ((NumberCard) userCards.get(i)).getNumber();
                else if (userCards.get(i).getColor().equals(Color.YELLOW))
                    return "YELLOW " + ((NumberCard) userCards.get(i)).getNumber();
            }
            else if (userCards.get(i) instanceof ChangeCard)
                return "WildCard Type\nChange Card";

            else if(userCards.get(i) instanceof HitAndChangeCard)
                return "WildCArd Type\n Hit & ChangeCard";

            else if(userCards.get(i) instanceof SkipCard){
                if(userCards.get(i).getColor().equals(Color.BLUE))
                    return "BLUE Skip Card";
                else if(userCards.get(i).getColor().equals(Color.GREEN))
                    return "GREEN Skip Card";
                else if(userCards.get(i).getColor().equals(Color.RED))
                    return "RED Skip Card";
                else if(userCards.get(i).getColor().equals(Color.YELLOW))
                    return  "Yellow Skip Card";
            }
            else if(userCards.get(i) instanceof HitCard){
                if(userCards.get(i).getColor().equals(Color.BLUE))
                    return "HitCard Skip Card";
                else if(userCards.get(i).getColor().equals(Color.GREEN))
                    return "HitCard Skip Card";
                else if(userCards.get(i).getColor().equals(Color.RED))
                    return "HitCard Skip Card";
                else if(userCards.get(i).getColor().equals(Color.YELLOW))
                    return  "HitCard Skip Card";
            }
        }
        return "???";
    }

I apologize if its a lot of code to look through but I can't find any other solution and I need to submit this in 5 hours

Thank you!

0 Answers
Related