【界面说明】
下拉列表框,选谁谁显示。复选框与单选按钮,输出被选与否的状态。知识点主要代码为:
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(); } }