3

5 つのラジオ ボタンのボタン グループがあり、少なくとも 1 つが選択されているかどうかを確認する必要があります。

これは正しいですか?

buttonGroup1.isSelected(ButtonModel);

しかし、ButtonmModelここには何がありますか?

4

5 に答える 5

2

さらに、質問の要点として、何も選択されていない場合は null を返すため、ButtonGroup クラスの getSelected() メソッドを使用して、ボタン グループのラジオ ボタンに選択があるかどうかを判断できます。

private boolean isSelection(ButtonGroup buttonGroup) {
    return (buttonGroup.getSelected() != null);
}

これが誰かに役立つことを願っています!!!

于 2014-01-22T19:18:43.037 に答える
0
package radiobuttongroup;

import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.LinkedHashMap;
import java.util.Map;

import javax.swing.ButtonGroup;
import javax.swing.ButtonModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JRadioButton;

public class RadioButtonGroup {

  public static void main(String[] args) {
    new RadioButtonGroup();
  }

  private RadioButtonGroup() {
    Container contentPane = frame.getContentPane();
    contentPane.setLayout(new GridLayout(0, 1));

    for (int i = 1; i <= 5; i++) {
      JRadioButton radio = new JRadioButton(Integer.toString(i));
      ButtonModel buttonModel = radio.getModel();
      modelToRadioButton.put(buttonModel, radio);
      buttonGroup.add(radio);
      contentPane.add(radio);
    }

    JButton buttonTestSelection = new JButton("Selection Test");
    JButton buttonClearSelection = new JButton("Clear Selection");
    contentPane.add(buttonTestSelection);
    contentPane.add(buttonClearSelection);

    buttonTestSelection.addActionListener(new ActionListener() {
        @Override public void actionPerformed(ActionEvent arg0) {
          ButtonModel buttonModel = buttonGroup.getSelection();

          if (buttonModel == null) {
            System.out.println("No radio button is selected");
          }
          else {
            if (modelToRadioButton.containsKey(buttonModel)) {
              JRadioButton b = modelToRadioButton.get(buttonModel);
              System.out.println("You selected button " + b.getText());
            }
            else {
              System.err.println("Weird, unrecognised button model!");
            }
          }
        }
      });

    buttonClearSelection.addActionListener(new ActionListener() {
        @Override public void actionPerformed(ActionEvent e) {
          buttonGroup.clearSelection();
        }
      });

    frame.pack();
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
  }

  private JFrame frame = new JFrame("RadioButtonGroup");
  private Map<ButtonModel, JRadioButton> modelToRadioButton =
    new LinkedHashMap<ButtonModel, JRadioButton>();
  private ButtonGroup buttonGroup = new ButtonGroup();
}
于 2012-12-21T10:30:13.807 に答える
0

選択されたラジオ ボタンを見つけることに関しては、ButtonModel を使用して多くのことを行うことはできません。ただし、ButtonGroup には、AbstractButtons の列挙を返すメソッド getElements() があります。これらの AbstractButtons は、列挙型を介した反復中に JRadioButtons にキャストできます...

次のメソッドは、渡された ButtonGroup の選択された JRadioButton を返すか、何も選択されていない場合は null を返します...

private JRadioButton getSelectedRadioButton(ButtonGroup buttonGroup) {

    Enumeration<AbstractButton> abstractButtons = buttonGroup.getElements();
    JRadioButton radioButton = null;

    while (abstractButtons.hasMoreElements()) {
        radioButton = (JRadioButton) abstractButtons.nextElement();
        if (radioButton.isSelected()) {
            break;
        }
    }
    return radioButton;
}

JRadioButton を選択したら、そのプロパティにアクセスするのは簡単です。選択されているボタンの text プロパティが必要だとします...

String selectedRadioButtonText = getSelectedRadioButton(buttonGroup).getText();

これが誰かに役立つことを願っています!!!

于 2014-01-22T17:26:17.813 に答える
0

ラジオ ボタンは 5 つしかないため、すべてを手動でチェックできます (ラジオ ボタンの名前が radio1、...、radio5 であると仮定します)。

 boolean isRadio1, isRadio2, isRadio3, isRadio4, isRadio5 = false;

 if (radio1.isSelected() == true) isRadio1 = true;
 if (radio2.isSelected() == true) isRadio2 = true;
 if (radio3.isSelected() == true) isRadio3 = true;
 if (radio4.isSelected() == true) isRadio4 = true;
 if (radio5.isSelected() == true) isRadio5 = true;

最もエレガントなソリューションではありませんが、うまくいきます。

于 2013-03-26T17:16:16.070 に答える