黑马程序员技术交流社区

标题: 复选框 [打印本页]

作者: 马雨铎    时间: 2011-8-1 10:58
标题: 复选框
比如说 只允许有一个复选框被选中
如果已经选择一个复选框不能选第二个
检查复选框是否被选中 没有的话提示选中一个


感觉应该用 函数控制去写    但是一点思路都没有,   童鞋们给提供下 思路!
作者: 匿名    时间: 2011-8-1 11:05
标题: 回复 楼主 的帖子
你说的是单选按钮吧  ( VB语言的说法)
下面我是看视频时写的一段代码,希望能对你有帮助![code]package GUI.checkbox;

import java.awt.Checkbox;
import java.awt.CheckboxGroup;
import java.awt.Choice;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class CheckboxTest extends Frame {

        /**
         * 单选按钮和复选按钮(组合框)和下拉列表框
         * 以及他们对应的事件监听器
         */

        Checkbox cb = new Checkbox("你想成为黑马吗?");
        //定义一个组合框组
        CheckboxGroup cbg = new CheckboxGroup();
        //定义一个属于同一组的单选按钮
        Checkbox cb1 = new Checkbox("想", true, cbg);
        Checkbox cb2 = new Checkbox("不想", false, cbg);
        Choice c = new Choice();
       
        public void init() {
                setSize(500, 500);
                setTitle("Checkbox");
                FlowLayout fl = new FlowLayout();
                setLayout(fl);
                add(cb);
                add(cb1);
                add(cb2);
                c.add("-------");
                c.add("中国");
                c.add("小日本");
                add(c);
                addWindowListener(new WindowAdapter() {
                        @Override
                        public void windowClosing(WindowEvent e) {
                                System.exit(0);
                        }
                });
                setVisible(true);
                MyListener ml = new MyListener();
                cb.addItemListener(ml);
                cb1.addItemListener(ml);
                cb2.addItemListener(ml);
                //给下拉列表框注册事件监听器
                c.addItemListener(new ItemListener(){
                        @Override
                        public void itemStateChanged(ItemEvent e) {
                                //方法一:
                                //返回当前选定项的索引。
                                int post = c.getSelectedIndex();
                                //根据序号,获取此 Choice 菜单中指定索引上的字符串
                                System.out.println(c.getItem(post));
                               
                                //方法二:返回受事件影响的项(对象)
                                System.out.println(e.getItem());
                        }
                });
        }

        class MyListener implements ItemListener {

                @Override
                public void itemStateChanged(ItemEvent e) {
                        //返回产生事件的 ItemSelectable 对象方式1
                        Checkbox cbs = (Checkbox) e.getItemSelectable();
                        //返回产生事件的 Checkbox 对象方式2
                        //Checkbox  cbx = cbg.getSelectedCheckbox();
                       
                        // 匹配事件源:可以用下面的两种方式
                        //方式一:比较产生事件对象的label属性值
                        if (cbs.getLabel().equals("你想成为黑马吗?")) {
                                //判断组合框是否选中
                                if(cbs.getState()){
                                        System.out.println("选中啦!");
                                }else{
                                        System.out.println("很遗憾没有选中!");
                                }
                        }
                        //方式二:直接比较对象
                        else if (cbs == cb1) {
                                //判断选择与否的方法1
                                if(e.getStateChange() == ItemEvent.SELECTED){
                                        System.out.println("我很想成为黑马程序员");
                                }
                        }
                        else if (cbs == cb2) {
                                //判断选择与否的方法2
                                if(cbs.getState()){
                                        System.out.println("我不想成为黑马程序员");
                                }/*else{//此处的else语句无效,即不能通过else来判断单选按钮没有选中。
                                        System.out.println("haha");
                                }*/
                        }
                }
        }

        public static void main(String[] args) {
                new CheckboxTest().init();
        }

}[/code]
作者: 匿名    时间: 2011-8-1 21:11
用javascript 很容易搞定
作者: 匿名    时间: 2011-8-2 02:44
JCheckBox中有个isSelected()  判断是否被选中
选中为true
反之则为false




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2