Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 删除jbutton中的图像图标_Java_Swing_Jbutton_Imageicon - Fatal编程技术网

Java 删除jbutton中的图像图标

Java 删除jbutton中的图像图标,java,swing,jbutton,imageicon,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

我有一个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));
        } 
    }
}
可以删除映像(xxxx是该jbutton的名称)

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

panel1.add(new JButton(Icon0));
如何知道jbuttons的名称,以便使用xxxx.setImage(null);要先删除图像吗


谢谢

您没有跟踪JButtons,调用
selectpic()
会在JPanel中填充按钮,因此多次调用会创建大量按钮

我建议您在类字段中设置jbutton,如下所示:

private JButton button1;
for (int i = 0; i < numberOfButtons; i++) {
    buttons[i] = new JButton();
    panel1.add(buttons[i]);
}
然后,在初始化UI时,也要初始化按钮:

// UI init here
button1 = new JButton();
panel1.add(button1);
选择pic
方法中,设置图标

button1.setIcon(choosedIcon);
PD:现在我更仔细地查看您的代码,我认为JButton数组会更好。因此,字段声明如下所示:

private JButton[] buttons = new JButton[numberOfButtons];
初始化过程如下所示:

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

PD2:我建议您以小写字母开始变量名,如。

selectPic不是一个好方法,因为它只需要在现有的JButton上设置图标,而不需要更多。它不应该向GUI添加JButton。编辑:按照Emd4600的建议。他的答案是1+,并以大写字母开始类名。i、 e.,
规则规则=新规则()应该是
规则规则=新规则()。1+回答这个问题。谢谢你的回复。首先,我真的想声明JButtons 1-9。但是如果我这样做了,我就无法编写程序来使用for循环在某些jbuttons中设置正确的图像……这里是pic[]:int pic[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26};实际上,selectpic()扩展为“else if(rule.pic[i]==26)…”,在洗牌之后,我得到pic[]中的前9个数字,并使用selectpic()中的for循环来设置JButton中的相应图像。然后,您可能需要使用
JButton
s数组。再看一遍答案,我已经编辑过了。