0

こんにちは、私はJavaが初めてです。私はゲーム名を作る必要があります Ratsuk 魔女はチェスによく似ていますが、ナイトしかありません。したがって、騎士が移動するスペースがなくなると、プレイヤーは負けます。

このためにボタンの配列を作成しました

import java.awt.*;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Tablero {

    private JButton[][] mesa;

    public Tablero() {
        mesa = new JButton[8][8];
    }

    public void cuadriculado(JFrame ventana) {
        JPanel panel = new JPanel(new GridLayout(8, 8, 4, 4));
        for (int i = 0; i < mesa.length; i++) {
            for (int j = 0; j < mesa[0].length; j++) {
                mesa[i][j] = new JButton();
                mesa[i][j].setPreferredSize(new Dimension(40, 40));
                panel.add(mesa[i][j]);
            }
        }
        for (int r = 0; r < mesa.length; r++) {
            for (int t = 0; t < mesa[0].length; t++) {
                if (r % 2 == 0 || r == 0) {
                    if (t % 2 == 0 || t == 0) {
                        mesa[r][t].setBackground(Color.BLACK);
                    } else {
                        mesa[r][t].setBackground(Color.WHITE);
                    }
                } else {
                    if (t % 2 == 0 || t == 0) {
                        mesa[r][t].setBackground(Color.WHITE);
                    } else {
                        mesa[r][t].setBackground(Color.BLACK);
                    }
                }
            }
        }
        ventana.setContentPane(panel);
        ventana.setSize(500, 500);
        ventana.setVisible(true);
        Icon image = new ImageIcon(getClass().getResource("redKnight.gif"));
        mesa[0][0] = new JButton(image);
    }
}

ファイルはコンパイルされますが、ボタン mesa[0][0] に設定しようとしている画像が表示されません。どうすればこれを修正できますか?

4

3 に答える 3

0

これを試して:

  try {
Icon image = ImageIO.read(getClass().getResource("redKnight.gif"));      
mesa[0][0] = new JButton();
    mesa[0][0].setIcon(new ImageIcon(image ));
  } catch (IOException ex) {
  }
于 2013-06-15T07:36:11.097 に答える
0

JButtonfor をmesa[0][0] 再度作成しないでください。ただしicon、その既存のJButtonオブジェクトに対して を設定する必要があります。

Icon image = new ImageIcon(getClass().getResource("redKnight.gif"));
mesa[0][0].setIcon(image);
于 2013-06-15T07:38:12.107 に答える
0

JButton既存のオブジェクトに画像を追加するのではなく、新しいオブジェクトを作成しJButtonているため、問題が存在します。

置換対象に既に追加されているオブジェクトを設定しmesa[0][0]=new JButton(image)ません。一度 Java の基礎を一新する必要があります。JButtonJFrame

メソッドを使用JButton#setIcon(Icon img)して、既存のJButtonオブジェクトに画像を追加します。

           `mesa[0][0].setIcon(image);`

また、フレームを表示するように設定した後に画像を追加しているJFrame#repaint()ため、呼び出しなどでフレームを更新する必要がある場合があります...

または、代わりに次のようにコードを変更します。

    Icon image = new ImageIcon(getClass().getResource("redKnight.gif"));
    mesa[0][0].setIcon(image);
    ventana.setContentPane(panel);
    ventana.setSize(500, 500);
    ventana.setVisible(true);
于 2013-06-15T07:39:28.347 に答える