我正在用 javafx 编写一个简单版本的 BlackJack,但我猜我迷失了回家的路!当我点击按钮时,我需要显示两行卡片。 单击按钮时如何连续添加不同的图像?我尝试使用 GridPane 和 BorderPane 但图像显示在同一位置...我知道每次按下按钮时都需要一个 for 循环,但我'我不知道该怎么做..我在 java swing 中制作了相同的游戏,并且进展顺利
所需的布局
当前布局
这是我的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);
}
最佳答案
这可以通过GridPane
来完成,但您必须指定列/行索引以防止放置Node
在同一位置。
为了简单起见,以下示例使用 Rectangle
,但它适用于任何 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();
}
请注意,如果您使用 gridPane.getChildren().add(node)
,则使用默认列/行索引 (0
),除非分配了不同的位置在 node
的属性中使用 GridPane.setConstraints
, GridPane.setRowIndex
或GridPane.setColumnIndex
请注意,BorderPane
不是正确的 Parent
来显示彼此相邻的多个节点,除非它们适合顶部、左侧、中心、右侧和/或的“角色”或底部节点(您的场景中并非如此)。
关于java - 将 2 个或更多图像添加到 Pane Javafx 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37467941/