日期:2014-05-20  浏览次数:20667 次

关于Swing单选问题
为什么我用 swing的单选按钮的时候可以多选?

要怎么设置才不会多选  

代码: int margin = 30;
for (int i = 0; i < list.size(); i++) {
tmd = new TypeManageDTO();
String value = list.get(i).getInfotype_value();
JRadioButton jrb = new JRadioButton(value);
jrb.setBounds(0, margin, 1480, 10);
margin += 30;
jPanel1.add(jrb);

}

------解决方案--------------------
单选按钮的效果其实还是要用ButtonGroup才能实现的,简单地添加到面板里面不行的,先给你贴个例子
Java code

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

/**
 * 这是JRadioButton使用的一个实例
 * 获取JRadioButton的对应值感觉还是麻烦了一些,不知道有没有简单一些的方法?
 * @author GaoYong
 *
 */
public class JRadioButtonDemo1 extends JFrame{
    private ButtonGroup genderGroup=null;
    private JRadioButton boyBtn=null;
    private JRadioButton girlBtn=null;
    
    public JRadioButtonDemo1(){}
    
    public JRadioButtonDemo1(String title){
        super(title);
        boyBtn=new JRadioButton("boy");
        girlBtn=new JRadioButton("girl");
        genderGroup=new ButtonGroup();
        genderGroup.add(boyBtn);
        genderGroup.add(girlBtn);
        
        this.getContentPane().setLayout(new FlowLayout());
        this.getContentPane().add(boyBtn);
        this.getContentPane().add(girlBtn);
        
        girlBtn.addActionListener(new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent arg0) {
                // TODO Auto-generated method stub
//                genderGroup.getSelection().g
                System.out.println(girlBtn.getText());
                System.out.println("girlBtn is selected is "+girlBtn.isSelected());
                
            }
            
        });
        
        boyBtn.addActionListener(new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent arg0) {
                // TODO Auto-generated method stub
                System.out.println(boyBtn.getText());
                System.out.println("boyBtn is selected is "+boyBtn.isSelected());
                
            }
            
        });
        
        
        this.pack();
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLocationRelativeTo(null);
        this.setVisible(true);
    }
    
    public static void main(String[] args){
        new JRadioButtonDemo1("Demo");
    }

}

------解决方案--------------------
3楼正解、
------解决方案--------------------
3楼正解。
需要使用ButtonGroup这个东东