zoukankan      html  css  js  c++  java
  • 选择监听事件ItemListener(是否被选择)

    【界面说明】

    下拉列表框,选谁谁显示。复选框与单选按钮,输出被选与否的状态。知识点主要代码为:

    int state = e.getStateChange();
    ItemEvent.SELECTED
    ItemEvent.DESELECTED

     

    public class Demo extends JFrame {
        public Demo() {
            setBounds(100, 100, 300, 150);
            setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            Container c = getContentPane();
            c.setLayout(new GridLayout(1, 2));//网格布局
            JPanel leftPanel = new JPanel();//左面板
            c.add(leftPanel);
            JLabel label = new JLabel("选择要显示的组件");
            leftPanel.add(label);
            String items[] = {"全部显示", "复选框", "单选按钮"};
            JComboBox comboBox = new JComboBox(items);
            leftPanel.add(comboBox);
            JPanel rightPanel = new JPanel();//右面板,黑色边框
            rightPanel.setBorder(new LineBorder(Color.black));
            c.add(rightPanel);
            JCheckBox checkBox = new JCheckBox("复选框");
            JRadioButton radioButton = new JRadioButton("单选按钮");
            rightPanel.add(checkBox);
            rightPanel.add(radioButton);
            setVisible(true);
    //下拉列表框的选项监听,被选中的显示,未被选中的隐藏。
            comboBox.addItemListener(new ItemListener() {
                public void itemStateChanged(ItemEvent e) {
                    String item = e.getItem().toString();//获取列表成员(字符串类)
                    switch (item) {
                        case "复选框":
                            checkBox.setVisible(true);
                            radioButton.setVisible(false);
                            break;
                        case "单选按钮":
                            checkBox.setVisible(false);
                            radioButton.setVisible(true);
                            break;
                        default:
                            checkBox.setVisible(true);
                            radioButton.setVisible(true);
                    }
                }
            });
    ////复选框的选项监听
    //        checkBox.addItemListener(new ItemListener() {
    //            public void itemStateChanged(ItemEvent e) {
    //                int state = e.getStateChange();
    //                switch (state) {
    //                    case ItemEvent.SELECTED:
    //                        System.out.println("复选框被选中");
    //                        break;
    //                    case ItemEvent.DESELECTED:
    //                        System.out.println("复选框取消");
    //                        break;
    //                }
    //            }
    //        });
    ////单选按钮的选项监听
    //        radioButton.addItemListener(new ItemListener() {
    //            public void itemStateChanged(ItemEvent e) {
    //                int state = e.getStateChange();
    //                switch (state) {
    //                    case ItemEvent.SELECTED:
    //                        System.out.println("单选按钮被选中");
    //                        break;
    //                    case ItemEvent.DESELECTED:
    //                        System.out.println("单选按钮取消");
    //                        break;
    //                }
    //            }
    //        });
            //调用复选框与单选按钮共同的类方法,简略代码
            checkBox.addItemListener(new MyItemListener());
            radioButton.addItemListener(new MyItemListener());
        }
    
        class MyItemListener implements ItemListener {
            public void itemStateChanged(ItemEvent e) {
                //强制转换为抽象按钮:AbstractButton是JButton、JCheckBox、JRadioButton的父类
                //由于不知道谁会被选中,所以使用它们的父类
                AbstractButton btn = (AbstractButton) e.getSource();//发生Event的源头
                int state = e.getStateChange();
                switch (state) {
                    case ItemEvent.SELECTED:
                        System.out.println(btn.getText() + "被选中");
                        break;
                    case ItemEvent.DESELECTED:
                        System.out.println(btn.getText() + "取消");
                        break;
                }
            }
        }
    
        public static void main(String[] args) {
            new Demo();
        }
    }
  • 相关阅读:
    【YbtOJ#20068】连通子图
    【YbtOJ#20067】糖果分配
    【GMOJ6801】模拟patrick
    【GMOJ6800】模拟spongebob
    【洛谷P4449】于神之怒加强版
    【洛谷P3601】签到题
    【洛谷P2408】不同子串个数
    【洛谷P3809】【模板】后缀排序
    【JZOJ1753】锻炼身体
    【GMOJ1164】求和
  • 原文地址:https://www.cnblogs.com/xixixing/p/9502797.html
Copyright © 2011-2022 走看看