请教下swing中怎么遍历checkbox控件并获取它们的值

解决方案 »

  1.   

    什么叫遍历jcheckbox?
    你的需求或者说你想要达到什么样的目的,现在你又是如何组织的?
    描述的详细些吧
      

  2.   


    public static ArrayList<JCheckBox> getAllJCheckBox(Container ct, ArrayList<JCheckBox> list){
    if(list==null){
    list=new ArrayList<JCheckBox>();
    }
    int count=ct.getComponentCount();
    for(int i=0;i<count;i++){
    Component c=ct.getComponent(i);
    if(c instanceof JCheckBox){
    list.add((JCheckBox)c);
    }
    else if(c instanceof Container){
    getAllJCheckBox((Container)c,list);
    }
    }
    return list;
    }
    Container ct你可以传任意的Swing组件  比如:JFrame JPanel 等等
      

  3.   

        ArrayList<JCheckBox> 是引用什么包的 怎么我贴过去报错
    Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: Container
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
    at java.lang.Class.getDeclaredMethod(Class.java:1935)
    at java.awt.Component.isCoalesceEventsOverriden(Component.java:5901)
    at java.awt.Component.access$400(Component.java:169)
    at java.awt.Component$4.run(Component.java:5855)
    at java.awt.Component$4.run(Component.java:5853)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.awt.Component.checkCoalescing(Component.java:5852)
    at java.awt.Component.<init>(Component.java:5821)
    at java.awt.Container.<init>(Container.java:251)
    at java.awt.Window.<init>(Window.java:430)
    at java.awt.Frame.<init>(Frame.java:403)
    at java.awt.Frame.<init>(Frame.java:368)
    at javax.swing.JFrame.<init>(JFrame.java:163)
    at test1.test555.<init>(test555.java:18)
    at test1.test555$2.run(test555.java:175)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
    Caused by: java.lang.ClassNotFoundException: Container
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    ... 25 more
      

  4.   


    import java.awt.Component;
    import java.awt.Container;
    import java.util.ArrayList;
    import javax.swing.JCheckBox;
      

  5.   

    引用了之后就好了 但是我要获取到所有JCHECKBOX的值的话怎么写?
      

  6.   

    改改就行了    public static ArrayList<Boolean> getAllJCheckBoxValue(Container ct, ArrayList<Boolean> list){
            if(list==null){
                list=new ArrayList<Boolean>();
            }
            int count=ct.getComponentCount();
            for(int i=0;i<count;i++){
                Component c=ct.getComponent(i);
                if(c instanceof JCheckBox){
                    list.add(((JCheckBox)c).isSelected());
                }
                else if(c instanceof Container){
                 getAllJCheckBoxValue((Container)c,list);
                }
            }
            return list;
        }
      

  7.   

            Component[] cs = panel.getComponents();        
            List<JCheckBox> checkBoxs = new ArrayList<JCheckBox>();
            for(Component c:cs){
                if(c instanceof JCheckBox){
                    JCheckBox checkBox=((JCheckBox)c);
                    checkBoxs.add(checkBox);
                }
            }
            
            for(JCheckBox box:checkBoxs){
                checkBox.get……
                  checkBox.isSelected();
            }
      

  8.   

    是不是要将checkBox放到一个Buttongroup 里面,然后用buttongroup.getselect().getActionName();就可以得到选中 的值
      

  9.   

    当然要给checkBox.setActionName();就可以得到你设置的值了;