删除jbutton中的图像图标

时间:2015-08-31 17:27:41

标签: java swing jbutton imageicon

我有一个selectpic()方法来设置jbuttons中的图像。

public void selectpic() {
    rule rule = new rule();
    rule.shuffle();
    for (int i = 0; i < 9; i++) {
        if (rule.pic[i] == 0) {
            Icon0.setImage(Icon0.getImage().getScaledInstance(WIDTH,HEIGHT,Image.SCALE_DEFAULT));
            panel1.add(new JButton(Icon0));
        } else if (rule.pic[i] == 1) {
            Icon1.setImage(Icon1.getImage().getScaledInstance(WIDTH,HEIGHT,Image.SCALE_DEFAULT));
            panel1.add(new JButton(Icon1));
        } else if (rule.pic[i] == 2) {
            Icon2.setImage(Icon2.getImage().getScaledInstance(WIDTH,HEIGHT,Image.SCALE_DEFAULT));
            panel1.add(new JButton(Icon2));
        } else if (rule.pic[i] == 3) {
            Icon3.setImage(Icon3.getImage().getScaledInstance(WIDTH,HEIGHT,Image.SCALE_DEFAULT));
            panel1.add(new JButton(Icon3));
        } else if (rule.pic[i] == 4) {
            Icon4.setImage(Icon4.getImage().getScaledInstance(WIDTH,HEIGHT,Image.SCALE_DEFAULT));
            panel1.add(new JButton(Icon4));
        } else if (rule.pic[i] == 5) {
            Icon5.setImage(Icon5.getImage().getScaledInstance(WIDTH,HEIGHT,Image.SCALE_DEFAULT));
            panel1.add(new JButton(Icon5));
        } 
    }
}

每轮完成后,我必须再次调用selectpic()方法来更改图像。

但是,我不能再简单地再次调用该方法。

Q1。是否有必要首先删除图像然后再次调用selectpic(),以便它可以更改图像?

Q2。如果是这样,我在论坛中搜索并找到了使用

xxxx.setImage(null); 

可以删除图像(xxxx是该jbutton的名称),

但是在selectpic()中,我使用它来添加jbuttons。

panel1.add(new JButton(Icon0));

我怎么知道jbuttons的名字,以便我可以使用xxxx.setImage(null);首先删除图像?

谢谢!

1 个答案:

答案 0 :(得分:2)

你没有跟踪你的JButton,并且调用selectpic()用按钮填充JPanel,所以多次调用它会产生很多按钮。

我建议您将JButton放在类字段中,如下所示:

private JButton button1;

然后,在初始化UI时,也要初始化按钮:

// UI init here
button1 = new JButton();
panel1.add(button1);

selectpic方法中,设置图标。

button1.setIcon(choosedIcon);
PD:现在我更仔细地看你的代码,我认为一系列JButton会更好。因此,现场声明将是:

private JButton[] buttons = new JButton[numberOfButtons];

初始化将是这样的:

for (int i = 0; i < numberOfButtons; i++) {
    buttons[i] = new JButton();
    panel1.add(buttons[i]);
}

设置图标

buttons[i].setIcon(chosedIcon);

PD2:我建议您使用小写字母开始变量名称,例如Naming Convention