2016-04-22 11 views
0

私は研究用のコードでいくつか問題があります。これはJavaで初めてのことですが、配列内のJRadioButtonsコンテンツのアイコンを変更する方法はわかりません。私chargerBoutonsで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(); 
    } 
} 

私のコード()メソッドはうまく動作しますが、私の目的は、現在のボタンに応じたアイコンを設定することです。私のようにしようとしました

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

しかし、私はこの範囲では定義されていません。

どうすれば修正できますか? おかげ

+0

を参照してください。私は私を取るforループ内の変数を作成することによって、それを修正値と、このvarはmouseXXXから呼び出すことができます。 。 –

答えて

0

実は、私はあなたが正しくアイコンを設定すると思いますが、あなたはUIの更新をお願いしなければならない...

は、だからあなたのcreerBoutonsメソッドの最後にコールupdateUI()を追加します。 (それはつまり、(ツールバーに適用されます。あなたのオブジェクト)

それは今OKですJToolbar

関連する問題