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