2

我正在尝试制作棋盘,但我似乎无法弄清楚将代码放在哪里以将棋子图标添加到按钮。事实上,我不确定它是正确使用代码还是在错误的地方。

到目前为止,我的代码如下所示:

package gui;

import java.awt.Color;

import javax.swing.ImageIcon;
import javax.swing.JButton;

public class Square extends JButton implements Config {

    public Square(int n) {
        new ImageIcon("pawn.png");
        setBackground(calcColor(n));
     }

    Color calcColor(int n) {
        boolean everysecondSquare = (n % 2==0);
        boolean everysecondRow = ((n / ROWS) % 2 == 0);
        return (everysecondSquare != everysecondRow?P1Color:P2Color);
    }

    public ChessBoard ChessBoard;
}

我很确定它将图标添加到与定义正方形背景颜色的位置相同的位置,但显然它不起作用。显然,我对 java 编码很陌生。

我真的搞砸了吗?非常感谢所有反馈。如果需要有关代码的更多信息,请告诉我,我会尽快添加。

4

2 回答 2

2

您可以将带有构造函数的 Icon 对象传递给 Button 或使用按钮的 setIcon 方法。

JButton b = new Button(myIconObject)

myButtonObject.setIcon(myIconObject)

看看这里的文档: http ://docs.oracle.com/javase/7/docs/api/javax/swing/JButton.html

编辑:

在您的情况下,您可以将构造函数的第一行编辑为

public Square(int n) {
    setIcon(new ImageIcon("pawn.png"));
    setBackground(calcColor(n));
}

但这意味着创建的每个方块都会有一个棋子图标。您最好将其移出构造函数并执行类似的操作

Square s = new Square(n);
/* And then somewhere more appropriate ...*/
s.setIcon(new ImageIcon("pawn"));
于 2013-01-23T12:05:12.927 回答
1

试试这个。您需要实际设置按钮的图标。

public Square(int n) {
setIcon(new ImageIcon("pawn.png"));
setBackground(calcColor(n));
}
于 2013-01-23T12:03:12.530 回答