Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何设置可选JRadioButton的数量_Java_Swing_Jradiobutton_Buttongroup - Fatal编程技术网

Java 如何设置可选JRadioButton的数量

Java 如何设置可选JRadioButton的数量,java,swing,jradiobutton,buttongroup,Java,Swing,Jradiobutton,Buttongroup,我将如何设置JRadioButtons的可选项的数量? 我尝试将radiobuttons添加到buttongroup,并重写buttongroup类,但无法确定要修改哪个方法 基本上,我只想允许选择两个单选按钮。我知道使用复选框可以做到这一点,但我需要单选按钮的“粗糙度”,我认为这应该是一种更简单的方法,而不是修改复选框的外观和感觉 非常感谢!:) 一种方法是在每个单选按钮上添加一个ActionListener,如果选中该按钮,该按钮将更新计数器 您可以阅读关于jRadioButton函数的内容

我将如何设置JRadioButtons的可选项的数量? 我尝试将radiobuttons添加到buttongroup,并重写buttongroup类,但无法确定要修改哪个方法

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


非常感谢!:)

一种方法是在每个单选按钮上添加一个
ActionListener
,如果选中该按钮,该按钮将更新计数器

您可以阅读关于jRadioButton函数的内容

然后,如果计数器点击两个按钮,使其他按钮变为灰色(不可点击),则可以使用以下方法执行一项功能:


您可以在中找到有关可能方法的更多信息。

一种方法是在每个单选按钮中添加一个
ActionListener
,如果选中该按钮,该按钮将更新计数器

您可以阅读关于jRadioButton函数的内容

然后,如果计数器点击两个按钮,使其他按钮变为灰色(不可点击),则可以使用以下方法执行一项功能:

您可以在中找到有关可能的方法的更多信息。

以下是一个示例:

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);
            }
        });
    }
}

package com.haraj.test.java;
导入java.awt.GridLayout;
导入java.awt.event.ItemEvent;
导入java.awt.event.ItemListener;
导入java.util.LinkedList;
导入java.util.Queue;
导入javax.swing.BorderFactory;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.JRadioButton;
导入javax.swing.SwingUtilities;
公共类JRadioButtonTest
{
公共静态void main(字符串[]args)
{
SwingUtilities.invokeLater(新的Runnable()
{
@凌驾
公开募捐
{
JFrame=新JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel contentPane=(JPanel)frame.getContentPane();
setboorder(BorderFactory.createEmptyByOrder(5,5,5,5));
setLayout(新的GridLayout());
最终队列selectedButtons=new LinkedList();
ItemListener=新的ItemListener()
{
@凌驾
公共无效itemStateChanged(ItemEvent e)
{
JRadioButton newButton=(JRadioButton)e.getSource();
如果(例如getStateChange()==ItemEvent.DESELECTED)selectedButtons.remove(newButton);
其他的
{
如果(selectedButtons.size()==2)
{
JRadioButton oldButton=selectedButtons.poll();
如果(oldButton!=newButton)oldButton.setSelected(false);
}
选择按钮。添加(新按钮);
}
}
};
JRadioButton[]按钮=新的JRadioButton[6];
对于(int i=0;i
以下是一个示例:

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);
            }
        });
    }
}

package com.haraj.test.java;
导入java.awt.GridLayout;
导入java.awt.event.ItemEvent;
导入java.awt.event.ItemListener;
导入java.util.LinkedList;
导入java.util.Queue;
导入javax.swing.BorderFactory;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.JRadioButton;
导入javax.swing.SwingUtilities;
公共类JRadioButtonTest
{
公共静态void main(字符串[]args)
{
SwingUtilities.invokeLater(新的Runnable()
{
@凌驾
公开募捐
{
JFrame=新JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel contentPane=(JPanel)frame.getContentPane();
setboorder(BorderFactory.createEmptyByOrder(5,5,5,5));
setLayout(新的GridLayout());
最终队列selectedButtons=new LinkedList();
ItemListener=新的ItemListener()
{
@凌驾
公共无效itemStateChanged(ItemEvent e)
{
JRadioButton newButton=(JRadioButton)e.getSource();
如果(例如getStateChange()==ItemEvent.DESELECTED)selectedButtons.remove(newButton);
其他的
{
如果(selectedButtons.size()==2)
{
JRadioButton oldButton=selectedButtons.poll();
如果(oldButton!=newButton)oldButton.setSelected(false);
}
选择按钮。添加(新按钮);
}
}
};
JRadioButton[]按钮=新的JRadioButton[6];
对于(int i=0;i
如果选择了两个(限制为两个),用户点击第三个,将会发生什么情况。我同意