如何将图像放在按钮阵列的特定按钮中?

时间:2013-06-15 07:32:01

标签: java swing jbutton imageicon

嗨,我对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]中设置的图像不会出现。我该如何解决这个问题?

3 个答案:

答案 0 :(得分: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) {
  }

答案 1 :(得分:0)

您不应该再次为JButton 创建新的mesa[0][0] 。但是应该为现有的icon对象设置JButton

Icon image = new ImageIcon(getClass().getResource("redKnight.gif"));
mesa[0][0].setIcon(image);

答案 2 :(得分:0)

您正在创建新的JButton对象,而不是将图像添加到现有的JButton对象,因此存在问题。

设置mesa[0][0]=new JButton(image)不会将已添加的JButton对象添加到要替换的JFrame。你应该刷新一次Java的基础知识。

使用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);