2012-11-28 31 views
3

設計一個問題,答案的範圍可以通過radioButtons選舉。 爲了顯示更大的可點擊區域(應用程序用於觸摸屏),我將icon_1放置在單選按鈕上。Java搖擺radioButton與變化,點擊圖標

每個鼠標點擊都可以將顯示的圖標更改爲圖標_2,反之亦然。 我很抱歉,用

jRadioButtonActionPerformed 
ImageIcon o_ButtonIcon = new ImageIcon ("....") 
jRadioButton.setIcon(Icon m_ButtonIcon). 

我沒有得到任何改變,可點擊圖像。 你能幫我一個忙嗎?

回答

7

似乎工作正常。

發佈SSCCE以顯示特定問題。

enter image description here

enter image description here

這裏是例子(我不建議getScaledInstance(..)只是用它來簡單的例子)

import java.awt.Image; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.net.URL; 
import javax.imageio.ImageIO; 
import javax.swing.ImageIcon; 
import javax.swing.JFrame; 
import javax.swing.JRadioButton; 
import javax.swing.SwingUtilities; 

public class Test { 

    private ImageIcon ii1; 
    private ImageIcon ii2; 
    private JRadioButton jrb = new JRadioButton("Click me :)"); 
    private JFrame frame = new JFrame(); 

    public Test() { 
     try { 
      ii1 = new ImageIcon(ImageIO.read(new URL("http://cdn.macrumors.com/article/2010/09/03/145454-itunes_10_icon.jpg")).getScaledInstance(48, 48, Image.SCALE_SMOOTH)); 
      ii2 = new ImageIcon(ImageIO.read(new URL("http://www.quarktet.com/Icon-small.jpg")).getScaledInstance(48, 48, Image.SCALE_SMOOTH)); 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 
     initComponents(); 
    } 

    public static void main(String args[]) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       new Test(); 
      } 
     }); 
    } 

    private void initComponents() { 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     jrb.setIcon(ii1); 
     jrb.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent ae) { 
       if (jrb.getIcon() == ii1) { 
        jrb.setIcon(ii2); 
       } else { 
        jrb.setIcon(ii1); 
       } 
      } 
     }); 

     frame.add(jrb); 
     frame.pack(); 
     frame.setVisible(true); 
    } 
} 
+1

親愛的大衛,感謝您的提示答案與適當的援助,以我的問題。感謝Paul – user1860368

+0

@ user1860368很高興,如果這可以解決問題,請點擊帖子旁邊的空白勾號將其顯示爲接受的答案 –