【界面說明】
下拉列表框,選誰誰顯示。復選框與單選按鈕,輸出被選與否的狀態。知識點主要代碼為:
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(); } }