JRadioButton:如何用IconImage替换文本?

Jas*_*ers 5 java swing jradiobutton

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

我试过这个:

rotateButton = new JRadioButton(rotateIcon.getImage());
Run Code Online (Sandbox Code Playgroud)

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

我该怎么办?


我目前得到的是:

在此输入图像描述

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

在此输入图像描述

Eva*_*Eva 9

创建一个没有文本的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)


mKo*_*bel 5

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

  • 对不起,但它不是我想要的,我想保留现有的收音机,并用图像替换文字.因为这里是替换图像的默认单选按钮并保留文本 (4认同)
  • 这个答案是错误的,不应该被接受.@ andrew-thompson给出了正确的答案. (4认同)
  • +1很好.我总是在gui问题中看到你:) (2认同)
  • *"对我而言,就像我所知道的那样对我来说更难......"*编程语言比英语更符合逻辑*.;) (2认同)

And*_*son 5

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

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)

单选按钮与图像

如果符合以下条件,此技

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