【问题标题】:How to set image and text on JRadioButton?如何在 JRadioButton 上设置图像和文本?
【发布时间】:2014-04-03 07:18:02
【问题描述】:

我在我的应用程序中使用 Swing 和 JRadioButton。我需要在我的按钮上设置图像和文本。为此,我正在使用这个:

JRadioButton button1 = new JRadioButton("text", iconpath, false);

但它给出的输出是隐藏单选按钮并仅显示图像。

如何解决这个问题,有什么建议吗?我们也可以为 JCheckbox 的类似问题创建一些东西吗?

【问题讨论】:

  • 该图标覆盖了“单选”按钮,而不是通常的圆圈。我倾向于使用JLabel 来保存图标和文本,具体取决于您想要实现的目标
  • 我也想要那个圆圈文字和图片。显示在里面。
  • 是的,创建一个JRadioButton,没有文字或图标。创建一个带有图标和文本的JLabel。设置标签的labelFor 属性,将两者一起添加到您的屏幕上。您可能会发现先添加JPanel 会更容易。
  • @MadProgrammer 但我正在做的是我需要动态添加它而不是拖动那些组件。如果我需要该文本值 onclick 并且我需要在文本单击时单击该单选按钮。
  • 然后保持和关联单选按钮和标签,甚至可以创建自定义组件

标签: java image swing text jradiobutton


【解决方案1】:

设置 JRadioButtonJCheckBox 的图标会替换这些控件使用的默认字形 - 我知道,这很烦人。

最简单的解决方案是简单地创建一个JLabel 可以与JRadioButton 关联,也许使用某种Map 来保持它们之间的联系

一个更长期的解决方案可能是创建一个自定义组件,将概念结合到一个自定义和可重用的组件中,例如...

public class XRadioButton extends JPanel {

    private JRadioButton radioButton;
    private JLabel label;

    public XRadioButton() {
        setLayout(new GridBagLayout());
        add(getRadioButton());
        add(getLabel());
    }

    public XRadioButton(Icon icon, String text) {
        this();
        setIcon(icon);
        setText(text);
    }

    protected JRadioButton getRadioButton() {
        if (radioButton == null) {
            radioButton = new JRadioButton();
        }
        return radioButton;
    }

    protected JLabel getLabel() {
        if (label == null) {
            label = new JLabel();
            label.setLabelFor(getRadioButton());
        }
        return label;
    }

    public void addActionListener(ActionListener listener) {
        getRadioButton().addActionListener(listener);
    }

    public void removeActionListener(ActionListener listener) {
        getRadioButton().removeActionListener(listener);
    }

    public void setText(String text) {
        getLabel().setText(text);
    }

    public String getText() {
        return getLabel().getText();
    }

    public void setIcon(Icon icon) {
        getLabel().setIcon(icon);
    }

    public Icon getIcon() {
        return getLabel().getIcon();
    }

}

【讨论】:

  • 好吧,我从来不用这个,让我试一次。
  • @Mad 没有真正的图标,对 L&F 敏感,应该是paintIcon :-)
  • @MadProgrammer 它的工作年。真的,你怎么知道这么多。我什至不知道你是如何创建它的。 :P
  • +1 并接受这个答案。给一个真正“疯狂”的程序员。 :P :P
  • 好的,把JRadioButton改成JCheckBox
猜你喜欢
  • 2012-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多