0

JRadioButtons の選択可能な項目の数を設定するにはどうすればよいですか? ラジオボタンをボタングループに追加し、ボタングループクラスをオーバーライドしようとしましたが、どのメソッドを変更するかわかりません。

基本的には、ラジオボタンを 2 つだけ選択できるようにしたいと考えています。チェックボックスを使用してこれが可能であることは承知していますが、ラジオボタンの「丸み」が必要であり、チェックボックスのルックアンドフィールを変更する代わりに、これがより簡単な方法であると考えています。

本当にありがとう!:)

4

2 に答える 2

3

次に例を示します。

ここに画像の説明を入力

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);
            }
        });
    }
}
于 2013-07-16T19:38:35.840 に答える
1

ActionListener1 つの方法は、ボタンが選択された場合にカウンターを更新する個々のラジオボタンにを追加することです。

jRadioButton の機能については、こちらを参照してください。

次に、カウンターが 2 に達し、他のボタンが灰色 (クリック不可) になった場合に、次を使用して機能を実行できます。

    .setActionCommand("disable");

APIで可能なメソッドの詳細を確認できます。

于 2013-07-16T19:30:59.030 に答える