2012-11-28 5 views
3

질문을 디자인하면 답변 범위를 radioButtons로 선택할 수 있습니다. 큰 클릭 가능 영역 (애플리케이션이 터치 스크린 용)을 표시하려면 radiobuttons 위에 icon_1을 배치했습니다.변경이 가능한 클릭 가능한 아이콘이있는 자바 스윙 라디오 버튼

모든 마우스 클릭은 표시된 아이콘을 icon_2로 변경할 수 있으며 반대의 경우도 마찬가지입니다. 나는

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

내가 어떤 변화를 얻을, 클릭 가능한 이미지를 사용하여, 죄송합니다. 저에게 도움의 손길을주십시오.

답변

7

정상적으로 작동하는 것 같습니다.

SSCCE에 게시하면 특정 문제를 해결할 수 있습니다. 여기

enter image description here

enter image description here

은 예입니다

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

친애하는 데이비드, 적절한 도움을 당신의 프롬프트 응답에 대한 감사에 (내가 getScaledInstance(..) 그냥 빠른 예를 들어 그것을 사용하지 않는 것이 좋습니다) 내 문제. 고마워 폴 – user1860368

+0

@ user1860368이 문제가 해결되면 게시물 옆에있는 빈 체크 표시를 클릭하여 답변을 표시합니다. –