创建 Button 后将图像添加到 JavaFX 中的 Button

Adding image to a Button in JavaFX after Button is created

我正在使用 JavaFx 编写 MineSweeper 游戏。我在将按钮更改为仅包含图像而不包含文本时遇到问题。我的部分代码如下:

ImageView bomb;
Image bombImage = new Image(MineSweeper.class.getResourceAsStream("images/bomb.png"));
bomb = new ImageView(bombImage);
boolean[][] mineField = new boolean[row][column];
for (int i = 0; i < numMines; i++) {
    int indexRow = isMine.nextInt(row);
    int indexCol = isMine.nextInt(column);
    System.out.println("row: " + indexRow + ", column: " + indexCol);
    mineField[indexRow][indexCol] = true;
}

for (int i = 0; i < row; i++) {
    for (int j = 0; j < column; j++) {
        System.out.println("" + mineField[i][j]);
        if (mineField[i][j] == true) {
            board[i][j].setText("");
            board[i][j].setGraphic(bomb);


        } else {
            board[i][j].setText("Nope!");
        }

    }
}

这不是实际游戏的运作方式。但我想检查是否可以将炸弹的图像添加到包含地雷的按钮中。当我 运行 代码时,只有一个地雷的图像出现,而其他按钮只有空文本或说 "Nope!." 如果我不知道如何向按钮添加图像,那么我将无法真正继续游戏的编程。我决定从头开始构建这个游戏,而不是使用 Scene Builder。我很感激任何建议。

只显示一张图片的原因是不能对两个Button对象使用与graphic相同的ImageView

An optional icon for the Labeled. This can be positioned relative to the text by using setContentDisplay(javafx.scene.control.ContentDisplay). The node specified for this variable cannot appear elsewhere in the scene graph, otherwise the IllegalArgumentException is thrown. See the class description of Node for more detail.

修改这一行...

board[i][j].setGraphic(bomb);

...到...

board[i][j].setGraphic(new ImageView(bombImage ));

这将为您的所有 Button 创建一个新的 ImageView 对象。