gpt4 book ai didi

java - 识别点击了三个部分重叠的图像中的哪一个

转载 作者:行者123 更新时间:2023-12-02 00:21:17 25 4
gpt4 key购买 nike

我有几个 JLabel,每个 JLabel 都包含一个像这样的 ImageIcon:

ImageIcon icon = new ImageIcon("path/to/image.jpg");
JLabel label = new JLabel(icon);

这些图像是六角形的 .PNG。六边形“外部”的边缘(存在的冗余部分使用矩形 Canvas )是透明的。JLabels(因此图像)的顺序如下 in this example ,所以总是存在三个干扰图像。

由于在其他层之下或之上没有“可见”层,因此我想将“可点击区域”定义为恰好可见层。最聪明的方法是什么,或者有更优雅的解决方案吗?

最佳答案

我可以想到解决这个问题的三种解决方案:

  1. 如果您的六边形形状只是“黑线” - 您可以实现paintComponent并绘制Polygon。您必须拥有它们的引用资料。稍后 - 单击鼠标时,您将必须获取形状的组件和其中的鼠标点。然后迭代形状,为每个形状调用 contains 。使用此解决方案您将失去布局支持。
  2. 实现 GlassPane/layer 并将鼠标事件分派(dispatch)给适当的 JLabel - 迭代 JLabel
  3. 这将是最不可取的(因为紧密耦合) - 扩展 JLabel 并添加对相邻六边形组件的引用。当鼠标单击被触发时,您检查该组件是否应该“捕获”该事件。如果不是 - 您将事件“转发”到适当的组件。

关于java - 识别点击了三个部分重叠的图像中的哪一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10923892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com