选择监听事件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();
    }
}
原文地址:https://www.cnblogs.com/xixixing/p/9502797.html