Jas*_*ers 5 java swing jradiobutton
我想用一个图标替换单选按钮列表中的文本.
我试过这个:
rotateButton = new JRadioButton(rotateIcon.getImage());
Run Code Online (Sandbox Code Playgroud)
但是这会用图标替换单选按钮和文本.我想保留单选按钮并显示图像.
我该怎么办?
我目前得到的是:

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

创建一个没有文本的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
Run Code Online (Sandbox Code Playgroud)
公共JRadioButton(字符串文本,图标图标)和这里的简单示例
我刚刚使用此来源重现了您描述的行为:
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("A.T.", imageIcon);
JOptionPane.showMessageDialog(null, radioButton);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎是个错误,虽然我不记得看到带有图标的收音机.他们应该怎么样?
是时候进入我的'黑客盒'了.
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 = "<html><body><img src='" +
url +
"' width=128 height=128>";
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JRadioButton radioButton = new JRadioButton(html);
JOptionPane.showMessageDialog(null, radioButton);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)

如果符合以下条件,此技