2016-04-22 9 views
0

Ich habe einige Probleme mit meinem Code für Studien, es ist unser erstes Mal mit Java und ich weiß nicht, wie man das Icon von JRadioButtons Inhalt in einem Array ändert.Wie setze ich ein dynamisches setIcon auf einem JRadioButton

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(); 
    } 
} 

Mein Code in meinem chargerBoutons() -Methode arbeiten gut, aber mein Ziel ist es, das Symbol entsprechend der aktuellen Taste. Ich habe versucht, wie

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

zu tun, aber ich ist undefined in diesem Bereich.

Wie kann ich es beheben? Dank

+0

Es ist jetzt OK: ich das Problem beheben, indem Sie eine Variable in dem for-Schleife zu schaffen, die ich nehmen schätzen Und das var kann von mouseXXX nennen sein. . –

Antwort

0

Eigentlich, denke ich Dich auf das Symbol richtig eingestellt, aber Sie müssen für ein Update der Benutzeroberfläche fragen ...

Also den Anruf hinzufügen updateUI() am Ende Ihrer creerBoutons Methode. (Es gilt in der Symbolleiste auf (dh:. Ihr Objekt)

siehe JToolbar

Verwandte Themen