删除jbutton中的图像图标
remove image icon in jbutton
我有一个 selectpic() 方法可以在 jbutton 中设置图像。
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() 中,我用它来添加 jbutton。
panel1.add(new JButton(Icon0));
我如何知道 jbutton 的名称以便我可以使用 xxxx.setImage(null);要先删除图像吗?
谢谢!!
您没有跟踪 JButton,调用 selectpic()
会用按钮填充 JPanel,因此多次调用它会创建很多按钮。
我建议您在 class 字段中使用 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
.
我有一个 selectpic() 方法可以在 jbutton 中设置图像。
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() 中,我用它来添加 jbutton。
panel1.add(new JButton(Icon0));
我如何知道 jbutton 的名称以便我可以使用 xxxx.setImage(null);要先删除图像吗?
谢谢!!
您没有跟踪 JButton,调用 selectpic()
会用按钮填充 JPanel,因此多次调用它会创建很多按钮。
我建议您在 class 字段中使用 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
.