Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.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 如何检查按钮组中是否选择了单选按钮?_Java_Swing_Netbeans 7 - Fatal编程技术网

Java 如何检查按钮组中是否选择了单选按钮?

Java 如何检查按钮组中是否选择了单选按钮?,java,swing,netbeans-7,Java,Swing,Netbeans 7,我有一个由5个单选按钮组成的按钮组,我需要检查是否至少选择了其中一个 是这样吗 buttonGroup1.isSelected(ButtonModel) 但是这里的按钮模型是什么?package radiobuttongroup; package radiobuttongroup; import java.awt.Container; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.e

我有一个由5个单选按钮组成的按钮组,我需要检查是否至少选择了其中一个

是这样吗

buttonGroup1.isSelected(ButtonModel)

但是这里的按钮模型是什么?

package radiobuttongroup;
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();
}
导入java.awt.Container; 导入java.awt.GridLayout; 导入java.awt.event.ActionEvent; 导入java.awt.event.ActionListener; 导入java.util.LinkedHashMap; 导入java.util.Map; 导入javax.swing.ButtonGroup; 导入javax.swing.ButtonModel; 导入javax.swing.JButton; 导入javax.swing.JFrame; 导入javax.swing.JRadioButton; 公共类RadioButtonGroup{ 公共静态void main(字符串[]args){ 新的RadioButtonGroup(); } 专用RadioButtonGroup(){ 容器contentPane=frame.getContentPane(); setLayout(新的GridLayout(0,1));
对于(int i=1;i,因为您只有5个单选按钮,所以可以手动检查所有按钮 (假设单选按钮命名为radio1,…,radio5):


这不是最优雅的解决方案,但它可以解决问题。

在查找所选单选按钮时,使用ButtonModel做不了多少事情。但是ButtonGroup确实有getElements()方法返回AbstractButtons的枚举。这些AbstractButtons可以在通过枚举的迭代过程中转换为JRadioButtons

buttonGroup1.getSelection()==null
下面的方法将返回传递给它的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;
}
String selectedRadioButtonText = getSelectedRadioButton(buttonGroup).getText();

我希望这对某人有所帮助!!!

此外,更重要的是,您可以使用ButtonGroup类的getSelected()方法确定按钮组的单选按钮中是否有选择,因为如果没有选择,则返回null

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

我希望这对某人有帮助!!!

嗯..与a相比没有什么新的,是吗?
private boolean isSelection(ButtonGroup buttonGroup) {
    return (buttonGroup.getSelected() != null);
}