2016-06-16 11 views
1

JavaFxを使用してMineSweeperゲームをコーディングする作業を進めています。私は画像を含むだけでテキストを持たないようにボタンを変更することに問題があります。私のコードの一部は以下の通りです:Buttonを作成した後にJavaFXのボタンに画像を追加する

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!"); 
     } 

    } 
} 

これは実際のゲームの仕組みではありません。しかし、私は鉱山を含むボタンに爆弾の画像を追加できるかどうか確認したいと思っていました。コードを実行すると、鉱山の画像が1つしか表示されず、他のボタンに空のテキストが表示されたり、「いいえ!」と表示されたりします。画像をボタンに追加する方法がわからない場合は、実際にゲームのプログラミングを続けることはできません。私はこのゲームをゼロから構築し、シーンビルダを使用しないと決めました。私は助言に感謝します。

答えて

2

2つのButtonオブジェクトにはgraphicと同じImageViewを使用できない1つの画像の理由が表示されます。

「ラベル付き」のオプションのアイコン。これは、テキスト に対して、 setContentDisplay(javafx.scene.control.ContentDisplay)を使用して配置できます。この変数に指定されたノード は、シーン グラフの他の場所には表示されません。そうでない場合は、IllegalArgumentExceptionがスローされます。詳細についてはノードの説明 の説明を参照してください。

に... ...

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

をこの行を変更...

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

これはあなたのButton秒のすべてのための新しいImageViewオブジェクトを作成します。

+0

ありがとうございました。それは私のために完璧に働いた。 –

関連する問題