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