具体情况是:从数据库读出数据,生成复选框,修改后保存到数据库。只需要动态生成复选框,并得到选中值就可以,谢谢给位了,gui好久没碰了,都忘完了,急啊!!!!!求简短精炼的代码!!!!!!急急急……………………跪求!!!!小弟Q:1004143305还问一下,就是复选框没有分组的说法吗?通过分组直接获取该组已选中值,多好的。我看了checkboxgroup 里面的selected返回的是一个object 而不是一个对象数组。checkboxgroup感觉没啥用是的求教育。比如同一个gui窗口中有多个类型的复选框,比如,一个是兴趣爱好的复选框,另一个是特长的复选框,是不是只能通过checkbox的对象来区分,有没有什么直接区分哪些是兴趣,哪些是特长????主要是前面的问题。摆脱了!!!!!!!!!!

解决方案 »

  1.   

     public Object[] getSelectedObjects()
    这个方法怎么使用?
    Checkbox cb = null;
    for(int i=0;i<3;i++)
    {
    cb=new Checkbox("cb"+i);
    //cb.setCheckboxGroup(cbg);
    cb.setState(true);
    gsg.jp1.add(cb);

    }
    System.out.println(cb.getSelectedObjects().length);//输出结果是:1好像它始终只得到最后一个被选中的诶,请问该怎么使用
      

  2.   


    CheckBoxGroup 同地时间只能选择一个
      

  3.   

    1、使用Chckbox.import java.awt.*; 
    import java.awt.event.*; 
    import javax.swing.*; 
    public class CK extends JFrame {
    JPanel jp=(JPanel)this.getContentPane();
    private JButton jb;
    private Checkbox[] cb;
        public CK()
        {
         jp.setLayout(null);
         final int n=20;
         cb=new Checkbox[n];
         jb=new JButton("submit");
         jb.setBounds(new Rectangle(20,20,75,25));
         for(int i=0;i<n;i++)
         {
         cb[i]=new Checkbox(""+(i+1));
         cb[i].setBounds(new Rectangle(20,50+20*i,60,25));  
                jp.add(cb[i]);
         } 
         jp.add(jb);
         jb.addActionListener(new ActionListener()
         { 
    public void actionPerformed(ActionEvent e) { 
    for(int i=0;i<n;i++)  
             {   try
                 {
                 if(cb[i].getSelectedObjects().length==1)//判断是否选中,1为选中,报错为没选中.   
                 {  
                    System.out.println(cb[i].getLabel());//输出选中的   
                 }  
                 }
             catch(Exception ex)
             { //报错为没选中,不需要输出报错
             }
             }  

         });
        }
    public static void main(String[] args) { 
    CK frame=new CK();
    frame.setSize(800,600);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true); 

    }2、使用JRadioButtonimport java.awt.Rectangle;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.*;
     
    public class HK extends JFrame {
    JPanel jp=null;
    JRadioButton[] jb;
    JButton jt=new JButton("Submit");
        public HK()
        {
          jp=(JPanel)this.getContentPane();
          jp.setLayout(null); 
          jb=new JRadioButton[3];
          for(int i=0;i<3;i++)
          {
           jb[i]=new JRadioButton("jb"+(i+1)); 
          }
          for(int i=0;i<3;i++)
          {
           jb[i].setBounds(new Rectangle(20+60*i,20,60,25));
           jp.add(jb[i]);
          }
          jt.setBounds(new Rectangle(20,60,75,25));
          jp.add(jt);
          jt.addActionListener(new HK_bt_actionAdapter(this));
        }
    public static void main(String[] args) {
          HK frame=new HK();
          frame.setSize(400,200);
          frame.setVisible(true);
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
     public void bt_actionPerformed(ActionEvent e) {
     for(int i=0;i<3;i++)
     {
     if(jb[i].isSelected())//判断是否选中,true为选中,false为没选中.
     {
       System.out.println(jb[i].getText());//输出选中的
     }
     }
     } 

    class HK_bt_actionAdapter implements ActionListener {
    private HK adaptee;
    HK_bt_actionAdapter(HK adaptee) {
    this.adaptee = adaptee;
       } public void actionPerformed(ActionEvent e) {
    adaptee.bt_actionPerformed(e);
    }
    }
      

  4.   


    非常感谢你的回复。!!!!也许我没能表述得很清楚。不过昨天突然想到一个很好的见解办法那就是给每个jcheckbox 在生成时就给他添加ItemListener监听,在itemStateChanged触发。这个就可以扑捉到每个jcheckbox的状态改变,并把选中值保存到了一个treeset里。如果进一步的状态改变就调整treeset里的值。从而达到对整个jcheckbox选中与否进行记录!!!思路大概就这样。已经成功解决!!!!谢谢你们的光临,于帮助!!!!!有更好的解决方法,小弟也很愿意采纳!!!!!!!!!!!!