我读到一个JButton实现了ItemSelectable,并且在文档中它具有方法addItemListener,所以我可以争辩说它可以生成一个ItemEvent …但是当我向一个JButton注册(还为一个JMenuItem注册)时,该事件没有发生吗?
为什么?
我了解,如果在docs中报告某个组件具有add ….侦听器,则表示它支持该事件…但出于经验的考虑,这种情况并不常见.
真相是什么
解决方法:
“按下”按钮(触发一个ActionEvent)和一个“选择”按钮(触发ItemEvent)之间是有区别的.默认情况下,JButton由javax.swing.DefaultButtonModel支持.如果查看默认按钮模型中的setPressed和setSelected方法,您将看到触发不同事件的代码.
因此,如果您以编程方式调用JButton.setSelected,则将触发您的项目侦听器.如果单击该按钮,则只会获得操作事件.
还要注意,使用JButton(与JToggleButton不同)时,选择它时可能看不到太多视觉效果.
标签:swing,events,java 来源: https://codeday.me/bug/20191209/2096686.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。