Радиокнопка Rich Swing

При разработке десктопного приложения на основе Java + Swing я столкнулся с проблемой создания радиокнопки, рядом с которой вместо текста должна быть и картинка или, скажем, еще один виджет типа спиннера.

Щелчок по изображению или счетчику также должен выбрать соответствующий переключатель radioButton.

Является ли это возможным? если да, то как?


person Hectoret    schedule 30.06.2010    source источник


Ответы (2)


Мне кажется, что JRadioButton со значком, заданным для конструктора, не работает; он заменяет «собственный значок переключателя» на заданный значок. Я думаю, что в оригинале попросили радиокнопку со значком в дополнение к «значку радиокнопки».

Были некоторые дебаты о поведении в базе данных ошибок Sun с ошибкой #4177248, но без изменений.

Вместо этого можно попробовать JRadioButtonMenuItem, даже хотя, вероятно, с этим будет какое-то нежелательное поведение?

Краткая оценка для JRadioButton и JRadioButtonMenuItem:

public class IconRadioButtonEval {
    public static void main(String[] args) throws Exception {
        JFrame frame = new JFrame();
        JPanel panel = new JPanel();
        // Use some arbitrary working URL to an icon
        URL url =
                new URL(
                        "http://mikeo.co.uk/demo/sqlspatial/Images/RSS_Icon.png");
        Icon icon = new ImageIcon(url);
        JRadioButton button = new JRadioButton(icon);
        panel.add(new JLabel("RadioButton with icon:"));
        panel.add(button);
        panel.add(new JLabel("RadioButtonMenuItem with icon:"));
        panel.add(new JRadioButtonMenuItem(icon));

        frame.getContentPane().add(panel);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }
}

Предложение Джастина для другого компонента рядом с JRadioButton с пустой строкой, вероятно, должно хорошо работать в большинстве случаев.

person Touko    schedule 02.07.2010
comment
ваше решение помогло мне добавить текст и значок в радиокнопку, и я хочу спросить вас о вашем выражении, даже если с этим, вероятно, будет какое-то нежелательное поведение? что за не -желаемое поведение Спасибо (+1) - person Adil; 26.11.2012

Ну, есть конструктор для JRadioButton, который принимает Icon. Вы можете использовать это, чтобы рядом с ним был значок.

JRadioButton(Icon icon)

-- Создает изначально невыбранную радиокнопку с указанным изображением, но без текста.

В противном случае довольно легко сделать текст JRadioButtons пустым и поместить рядом с ним другой компонент. Затем вам нужно будет добавить прослушиватель к этому компоненту, чтобы JRadioButton щелкнул, если щелкнут другой компонент.

person jjnguy    schedule 30.06.2010
comment
Вы пробовали этот конструктор? Кажется, он заменяет исходное изображение переключателя вместо добавления значка рядом с ним (см. оценку в другом ответе) (-1). Подход с другим компонентом, вероятно, будет работать хорошо (+1) - person Touko; 02.07.2010