java - 如何设置可选择的JRadioButton的数量

标签 java swing jradiobutton buttongroup

我该如何设置 JRadioButtons 的可选项目数量? 我尝试将单选按钮添加到按钮组,并覆盖按钮组类,但无法确定要修改哪个方法。

基本上,我只想允许选择两个单选按钮。我知道使用复选框可以做到这一点,但我需要单选按钮的“圆度”,并且认为这应该是一种更简单的方法,而不是修改复选框的外观和感觉。

非常感谢! :)

最佳答案

这是一个例子:

enter image description here

package com.haraj.test.java;

import java.awt.GridLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.LinkedList;
import java.util.Queue;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.SwingUtilities;

public class JRadioButtonTest
{
    public static void main(String[] args)
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            @Override
            public void run()
            {
                JFrame frame = new JFrame();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                JPanel contentPane = (JPanel) frame.getContentPane();
                contentPane.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
                contentPane.setLayout(new GridLayout());

                final Queue<JRadioButton> selectedButtons = new LinkedList<JRadioButton>();
                ItemListener listener = new ItemListener()
                {
                    @Override
                    public void itemStateChanged(ItemEvent e)
                    {
                        JRadioButton newButton = (JRadioButton) e.getSource();

                        if(e.getStateChange() == ItemEvent.DESELECTED) selectedButtons.remove(newButton);
                        else
                        {
                            if(selectedButtons.size() == 2)
                            {
                                JRadioButton oldButton = selectedButtons.poll();
                                if(oldButton != newButton) oldButton.setSelected(false);
                            }
                            selectedButtons.add(newButton);
                        }
                    }
                };

                JRadioButton[] buttons = new JRadioButton[6];
                for(int i = 0; i < buttons.length; i++)
                {
                    buttons[i] = new JRadioButton();
                    buttons[i].addItemListener(listener);
                    contentPane.add(buttons[i]);
                }

                frame.pack();
                frame.setLocationByPlatform(true);
                frame.setVisible(true);
            }
        });
    }
}

关于java - 如何设置可选择的JRadioButton的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17684907/

相关文章:

JavaFX Self Installer With Inno Setup 5 - 修改后的 .iss 文件放在哪里?

java - 确定 Java 中是否在旋转矩形内单击鼠标(AWT、swing)

java - 为什么我的 JRadioButtons 标签是 "..."而不是我想要的文本?

java - Swing:调整 RadioButton 的大小

java - 使用Swing的JList

java - 为什么我从 Spock 测试中得到的调用太少?

java - 如果我使用 SharedPreferences,使用 onSaveInstanceState 是否有用

Java TextField getText() 给我一个无法比较的字符串

java - 如何将二进制文件存储到数组中并将其放入不同的标签(编译程序)?

java - 尝试使用 DateTimeFormatter 解析时间