Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 操作JToggleButton';按下/选择时显示图像图标_Java_Swing_Actionlistener - Fatal编程技术网

Java 操作JToggleButton';按下/选择时显示图像图标

Java 操作JToggleButton';按下/选择时显示图像图标,java,swing,actionlistener,Java,Swing,Actionlistener,在写这个问题时,我(非常神奇地)回答了我自己的问题,但这是一个我想与大家分享的发现。我知道这些应该是真实的“问题”,但这对我来说是一个不朽的发现。然而,下面有一个“问题”是可以回答的 我创建了一个扩展JToggleButton的自定义类。在这个类中,我删除了所有默认的MouseListener,因此它只在我认为对象准备就绪时才接受鼠标操作。我遇到的问题是操作JToggleButtons ImageIcon(使用setIcon()设置)。当我告诉按钮被选中时,如果按钮没有显示在屏幕上(由于JScr

在写这个问题时,我(非常神奇地)回答了我自己的问题,但这是一个我想与大家分享的发现。我知道这些应该是真实的“问题”,但这对我来说是一个不朽的发现。然而,下面有一个“问题”是可以回答的

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

事实证明,在我的自定义MouseListener中,我使用的是getModel.setSelected(true)而不是getModel.setPressed(true)。显然,我不清楚“选择”和“压制”之间的区别,但足以说这解决了我的问题。因此,我的“问题”是澄清这两个术语


总之,当您打算使用setPressed()时,不要在按钮上使用setSelected()。追查这件事真是太痛苦了!我真诚地希望这对其他人有所帮助。电子邮件是有效的,但是垃圾邮件捕捉器。

好的,我又找到了自己的答案,所以我想我应该分享并结束这个问题。当按钮有复选框/单选图标时,它被“选中”。按下按钮时,按钮被“按下”。JToggleButtons似乎结合使用这两个属性来正确地“单击并按下”按钮


图像图标消失的原因是我无意中将setPressedIcon()/setPressed()和setSelectedIcon()/setSelected()混合在一起。因为我混淆了术语,没有认识到其中的差异,所以我的用法不一致。

另请参见“谢谢”…这是我最初发现setPressed的地方,但在第二次查看后,我通过查看isSelected获得了一点理解(getSelected或setSelected不提供相同的信息)。