JRadioButton:如何用IconImage替换文本?

我想用一个图标替换单选按钮列表中的文本。

我试过这个:

rotateButton = new JRadioButton(rotateIcon.getImage()); 

但这会用图标替换单选按钮和文本。 我想保留单选按钮并显示图像。

我该怎么办?


我目前得到的是:

在此输入图像描述

但我希望它最终得到这个:

在此输入图像描述

公共JRadioButton(字符串文本,图标图标)和这里的简单示例

创建一个没有文本的JRadioButton,并在其旁边放置一个带有图像的JLabel。 您还可以创建一个类来隐藏复杂性。

 import java.awt.event.ActionListener; import javax.swing.*; import javax.swing.event.ChangeListener; public class RadioButtonWithImage extends JPanel { private JRadioButton radio = new JRadioButton(); private JLabel image; public RadioButtonWithImage(Icon icon) { image = new JLabel(icon); add(radio); add(image); } public void addToButtonGroup(ButtonGroup group) { group.add(radio); } public void addActionListener(ActionListener listener) { radio.addActionListener(listener); } public void addChangeListener(ChangeListener listener) { radio.addChangeListener(listener); } public Icon getImage() { return image.getIcon(); } public void setImage(Icon icon) { image.setIcon(icon); } } // end class RadioButtonWithImage 

我刚刚使用此源重现了您描述的行为:

 import java.awt.Image; import javax.swing.*; import javax.imageio.ImageIO; import java.net.URL; class RadioWithImage { public static void main(String[] args) throws Exception { URL url = new URL("http://www.gravatar.com/avatar/" + "a1ab0af4997654345d7a949877f8037e?s=128"); Image image = ImageIO.read(url); final ImageIcon imageIcon = new ImageIcon(image); SwingUtilities.invokeLater(new Runnable() { public void run() { JRadioButton radioButton = new JRadioButton("AT", imageIcon); JOptionPane.showMessageDialog(null, radioButton); } }); } } 

单选按钮“已选中”图标在哪里?

这对我来说似乎是一个错误,虽然我不记得看到带有图标的收音机。 他们应该怎么样?


是时候进入我的’黑客盒’了。

 import javax.swing.*; class RadioWithImage { public static void main(String[] args) throws Exception { String url = "http://www.gravatar.com/avatar/" + "a1ab0af4997654345d7a949877f8037e?s=128"; final String html = ""; SwingUtilities.invokeLater(new Runnable() { public void run() { JRadioButton radioButton = new JRadioButton(html); JOptionPane.showMessageDialog(null, radioButton); } }); } } 

单选按钮与图像

如果符合以下条件,此技

  1. 用例需要其他类型的图标(按下,翻转,选择等)
  2. 该按钮被禁用(它将呈现错误)。

没有单选按钮构造函数允许将图像作为内容参数而不是文本。 用图像替换单选按钮文本的唯一方法是生成html并将其作为参数传递给默认构造函数。

 import javax.swing.*; class RadioWithImage { public static void main(String[] args) throws Exception { URL url = Windows_ChordsGenerator.class.getResource("/images/img1.png"); final String html = ""; JRadioButton radioButton = new JRadioButton(html); } }