选择监听事件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(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!