2013-01-23 23 views
2

我正在尝试做一个棋盘,但我似乎无法弄清楚在哪里把我的代码添加到按钮的典当图标。事实上,我不确定它是否正确使用代码或者它是否在错误的地方。不确定将图标添加到JAVA中的JButton

我的代码看起来像这样至今:

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; 
} 

我敢肯定它会工作添加图标相同的地方,在你定义了正方形的背景颜色,但appearently它没有工作。很显然,我对Java编码非常陌生。

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

回答

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

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

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

谢谢加文!这整理出来:) – Xantrax