【发布时间】:2014-12-21 13:40:13
【问题描述】:
我有一个显示 *.png 图像的自定义组件。图像具有透明和非透明区域。如果我将 ActionListener(或 MouseClickListener)添加到组件,即使我单击组件的透明区域,它也会引发事件。从视觉上看,它看起来像是在组件外部单击。 如何声明哪个区域应该对点击做出反应,哪些不应该?
我已经阅读了有关从图像中获取像素来自事件对象的坐标并检查其透明度的信息。这似乎很难而且效果不佳。
也许定义这个组件的自定义边框或其他东西?
【问题讨论】:
-
你可以尝试在你的监听器中添加一个检查来验证鼠标点击的坐标是否来自非透明区域
-
我写过那个案例。它足够复杂。如果我要在 mouseEnter() 处理程序中检查它,那么我应该检查每个鼠标位置点。对于每个鼠标位置点,我必须从图像中获取该像素并检查透明度。开销很大。
-
“有很多开销”,确实,但是 Java 会自动为所有图像执行此操作,或者您为这个对您很重要的特定情况执行此操作。第二个更有意义!
-
[此处全面介绍][1] [1]:stackoverflow.com/questions/6735891/… 该问题可能已结束。
标签: java swing jcomponent clickable mouselistener