【问题标题】:Java swing radioButton with changing, clickable iconJava swing 单选按钮,带有变化的、可点击的图标
【发布时间】:2012-11-28 21:28:04
【问题描述】:

设计一个问题,回答的范围可以通过radioButtons来选择。 为了显示更大的可点击区域(该应用程序用于触摸屏),我将 icon_1 放在单选按钮上。

每次鼠标点击都可以将显示的图标更改为 icon_2,反之亦然。 对不起,使用

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

我没有得到任何变化的、可点击的图像。 你能帮帮我吗?

【问题讨论】:

    标签: java swing icons actionlistener


    【解决方案1】:

    似乎工作正常。

    发布SSCCE 以显示具体问题。

    这里是示例(我不推荐 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);
        }
    }
    

    【讨论】:

    • 亲爱的大卫,感谢您的及时答复,并为我的问题提供了适当的帮助。谢谢保罗
    • @user1860368 很高兴,如果这解决了问题,请点击帖子旁边的空勾号将其显示为已接受的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    相关资源
    最近更新 更多