我有几个JLabel,每个都有一个像这样的ImageIcon:
ImageIcon icon = new ImageIcon("path/to/image.jpg");
JLabel label = new JLabel(icon);
这些图像是。六角形的.PNG。边缘"外面"六边形(存在的冗余部分使用矩形画布)是透明的。 JLabels,图像,按in this example排序,因此总有三个干扰图像。
因为没有"可见"在另一个下方或上方的层,我想定义"可点击区域"准确地说是可见层。最聪明的方法是什么,或者是否有更优雅的解决方案?
答案 0 :(得分:3)
我可以为这个问题考虑三种解决方案:
paintComponent
并绘制Polygon
s。您必须拥有对它们的引用。稍后 - 在鼠标单击时,您必须在其中获取形状的组件和鼠标点。然后迭代为每个形状调用contains
的形状。使用此解决方案将失去布局支持。JLabel
- 迭代JLabel
JLabel
并添加对相邻六边形组件的引用。当点击鼠标时,检查该组件是否应该“捕获”此事件。如果不是 - 您将事件“转发”到适当的组件。