java – 在按下/选中时操作JToggleButton的ImageIcon

我(非常奇迹般地)在写这个问题时回答了我自己的问题,但这是一个我希望与大家分享的发现.我理解这些应该是真正的“问题”,但这对我来说是一个巨大的发现.但是,下面有一个“问题”可以回答.

我创建了一个扩展JToggleButton的自定义类.在这个类中,我删除所有默认的MouseListeners,因此当我认为对象准备就绪时它只接受鼠标操作.我遇到的问题是操纵JToggleButtons ImageIcon(使用setIcon()设置).如果按钮没有显示在屏幕上(由于JScrollPane而不可见)当我告诉按钮被选中时,ImageIcon将消失.同样,如果我在选择按钮时修改了ImageIcon,ImageIcon也会消失.

事实证明,在我的自定义MouseListener中,我使用的是getModel.setSelected(true)而不是getModel.setPressed(true).显然我并没有清楚地理解选择和按下之间的区别,但足以说明这一点已经解决了我的问题.因此,我的“问题”将澄清这两个术语.

总而言之,当你想使用setPressed()时,不要在按钮上使用setSelected().跟踪这个下来真是太痛苦了!我真诚地希望这可以帮助别人.电子邮件是有效的,但垃圾邮件捕获者.

最佳答案 好的,我又找到了自己的答案,所以我想我会分享并关闭这个问题.当具有复选框/无线电图标时,按钮被“选中”.按下按钮时“按下”按钮. JToggleButtons似乎组合使用这两个属性来正确“单击并按下”按钮.

ImageIcons消失的原因是因为我无意中混合了setPressedIcon()/ setPressed()和setSelectedIcon()/ setSelected().因为我混淆了术语并且没有认识到这些差异,所以我的用法不一致.

点赞