選擇監聽事件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();
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM