簡體   English   中英

刪除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充滿按鈕,因此多次調用它會創建很多按鈕。

我建議您將JButtons放在類字段中,如下所示:

private JButton button1;

然后,在初始化UI時,也要初始化按鈕:

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

然后在selectpic方法中,設置您的圖標。

button1.setIcon(choosedIcon);

PD:現在,我對您的代碼更加謹慎,我認為,使用JButtons數組會更好。 因此,字段聲明將是這樣的:

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中的Naming Convention

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM