java - 删除 jbutton 中的图像图标

标签 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(),才能更改图片?

第二季度。如果是这样,我在论坛中搜索并发现使用

xxxx.setImage(null); 

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

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

panel1.add(new JButton(Icon0));

我怎样才能知道 jbuttons 的名称,以便我可以使用 xxxx.setImage(null);要先删除图像吗?

谢谢!!

最佳答案

您没有跟踪 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 .

关于java - 删除 jbutton 中的图像图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32316681/

相关文章:

java - 如何在抽屉导航中提供 SettingsActivity?

java - Action 监听器中实例化按钮的 NullPointerException

java - 禁用 Swing 中 GUI 上的按钮

java - 使用 ImageIO.write() 方法时如何防止图像质量下降?

Java语音识别

java - 是否可以在 GUI 中选择添加 ActionListener?

java - 开始 GridBagLayout

java - 在操作事件方法中,它找不到我的 Jbutton 对象。我正在尝试制作角色选择类型的东西,但找不到可行的解决方案

java - 从 JTable 解析的 double 总和

Java drawLine() 方法不将类变量作为输入