【问题标题】:Adding image to a Button in JavaFX after Button is created创建按钮后将图像添加到JavaFX中的按钮
【发布时间】:2016-10-17 11:37:38
【问题描述】:

我正在使用 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!");
        }

    }
}

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

【问题讨论】:

    标签: java button javafx imageview minesweeper


    【解决方案1】:

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

    标签的可选图标。这可以相对于 通过使用文本 设置内容显示(javafx.scene.control.ContentDisplay)。节点 为这个变量指定的不能出现在场景的其他地方 图表,否则抛出 IllegalArgumentException。查看课程 Node 的描述以获取更多详细信息。

    修改这一行...

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

    ...到...

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

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

    【讨论】:

      猜你喜欢
      • 2012-09-22
      • 2017-04-07
      • 2020-08-24
      • 1970-01-01
      • 1970-01-01
      • 2012-09-11
      相关资源
      最近更新 更多