0

私は javafx で BlackJack の簡単なバージョンをプログラミングしていますが、家に帰る道を失ったと思います! ヒットボタンをクリックしたときにカードを 2 行で表示する必要があります。ボタンをクリックしたときに、別の画像を連続して追加するにはどうすればよいですか? 使用しようとしましGridPaneBorderPaneが、画像が同じ場所に表示されます...ボタンを押すたびにforループが必要なのはわかっていますが、その方法がわかりません..Javaで同じゲームを作成しましたスイングしてうまくいった

ご希望のレイアウト

私はこのようなものが欲しい

現在のレイアウト

しかし、javafxでは、私はこれから抜け出すことができません

これが私のloadImage方法です

    public void ImageloadP(Card xPCard) {
        String xP = xPCard.toString();
        Image card = new Image("file:/Users/cetabije/Desktop/Apa/src/cards.png/" + xP + ".png");
        ImageView xPv = new ImageView(card);
        xPv.setFitHeight(140);
        xPv.setFitWidth(95);
        root.getChildren().add(xPv);
    }
4

2 に答える 2

1

これはで実行できますが、 が同じ位置に配置されGridPaneないように、列/行のインデックスを指定する必要があります。Node

次の例ではRectangle、簡単にするために s を使用していますが、どのNode型でも機能します。

private Color color = Color.BLACK;

@Override
public void start(Stage primaryStage) {
    GridPane gridPane = new GridPane(); 
    gridPane.setHgap(10);
    gridPane.setVgap(10);
    Button btn = new Button("Add Rect");

    // add node specifying column and row index
    gridPane.add(btn, 0, 0);

    gridPane.setStyle("-fx-background-color: lime;");

    btn.setOnAction((ActionEvent event) -> {
        color = color.brighter();
        Rectangle rectangle = new Rectangle(20, 20);
        rectangle.setFill(color);

        // append rect to second row
        gridPane.addRow(1, rectangle);
    });

    Scene scene = new Scene(gridPane, 500, 500);

    primaryStage.setScene(scene);
    primaryStage.show();
}

usingのプロパティで別の位置が割り当てられていない限り、gridPane.getChildren().add(node)デフォルトの列/行インデックス ( ) が使用されることに注意してください。0nodeGridPane.setConstraintsGridPane.setRowIndexGridPane.setColumnIndex

上、左、中央、右、および/または下のノードの「役割」に適合しない限り、複数のノードを隣り合わせに表示することBorderPaneは正しくないことに注意してください(シナリオではそうではありません)。Parent

于 2016-05-26T19:08:06.623 に答える