2016-04-22 119 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