不确定在JAVA中向JButton添加图标

时间:2013-01-23 12:00:20

标签: java swing icons jbutton imageicon

我正在尝试制作一个棋盘,但我似乎无法弄清楚我的代码在哪里添加一个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编码很新。

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

2 个答案:

答案 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));
}