2016-04-22 29 views
0

我的研究代碼存在一些問題,這是我們第一次使用Java,我不知道如何更改數組中的JRadioButtons內容的圖標。如何在JRadioButton上設置動態setIcon

package exo_02_01; 

import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 
import javax.swing.ImageIcon; 
import javax.swing.JRadioButton; 
import javax.swing.JToolBar; 

@SuppressWarnings("serial") 
public class ControleEtiquette extends JToolBar { 

private ImageIcon[] m_iconesBoutons = new ImageIcon[18]; 
private JRadioButton[] m_boutons = new JRadioButton[6]; 
private String m_nomsIcones[] = { "bhgauche", "bhcentre", "bhdroite", "bvhaut", "bvcentre", "bvbas" }; 

private static final int NUMBER_BUTTONS = 6; 

public ControleEtiquette() { 
    super(); 
    chargerIcones(); 
    creerBoutons(); 
} 

private void chargerIcones() { 
    for (int i = 0; i < NUMBER_BUTTONS; i++) { 
     m_iconesBoutons[i] = new ImageIcon("RESGRAF/" + m_nomsIcones[i] + ".gif"); 
     m_iconesBoutons[i + NUMBER_BUTTONS] = new ImageIcon("RESGRAF/" + m_nomsIcones[i] + "R.gif"); 
     m_iconesBoutons[i + NUMBER_BUTTONS * 2] = new ImageIcon("RESGRAF/" + m_nomsIcones[i] + "B.gif"); 
    } 
} 

private void creerBoutons() { 
    for (int i = 0; i < m_boutons.length; ++i) { 
     m_boutons[i] = new JRadioButton(m_iconesBoutons[i]); 
     add(m_boutons[i]); 
     m_boutons[i].addMouseListener(new MouseAdapter() { 
      public void mouseEntered(MouseEvent e) 
      { 
       ((JRadioButton) e.getSource()).setIcon(m_iconesBoutons[0]); 
      } 

      public void mouseClicked(MouseEvent e) { 
       ((JRadioButton) e.getSource()).setIcon(m_iconesBoutons[NUMBER_BUTTONS * 2 - 1]); 
      } 

      public void mouseExited(MouseEvent e) { 
       ((JRadioButton) e.getSource()).setIcon(m_iconesBoutons[5]); 
      } 
     }); 
     if (i == 2) 
      addSeparator(); 
    } 
} 

我在我的chargerBoutons代碼()方法工作良好,但是我的目標是根據當前按鈕設置圖標。我試圖做像

((JRadioButton) e.getSource()).setIcon(m_iconesBoutons[i]); 

但我沒有在這個範圍內定義。

我該如何解決? 感謝

+0

它現在OK:我修復它通過在for循環需要我創造價值的一個變量,該變種能夠從mouseXXX調用。 。 –

回答

0

其實,我覺得你正確設置圖標,但你要問了該UI的更新中...

因此,在您的creerBoutons方法的末尾添加通話updateUI()。 (其應用工具欄(即上:你的對象)

看到JToolbar