我正在尝试制作一个棋盘,但我似乎无法弄清楚我的代码在哪里添加一个pawn图标到按钮。事实上,我不确定它是否正确使用代码或者它是否在错误的位置。
到目前为止,我的代码看起来像这样:
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编码很新。
我真的搞砸了吗?所有反馈都非常感谢。如果需要有关代码的更多信息,请告诉我,我会尽快添加它。
答案 0 :(得分: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"));
答案 1 :(得分:1)
试试这个。您需要实际设置按钮的图标。
public Square(int n) {
setIcon(new ImageIcon("pawn.png"));
setBackground(calcColor(n));
}