gpt4 book ai didi

java - 如何在 Java 中检测 Image 对象上的鼠标单击事件?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:52:15 25 4
gpt4 key购买 nike

在 Java 中实现“Kings' Corners”(荣耀的多人纸牌游戏)。

我试图让玩家将一张牌(图像)从他们的手上拖到 table 上的其他地方。问题在于玩家的手是“扇形”的,因此牌的图像会旋转并重叠。

这是一只手的例子:

enter image description here

我考虑过将每张卡片都制作成一个JPanel,但问题是我必须在其矩形 JPanel<内旋转绘制卡片,因为它们本身不能旋转。理想情况下,我想避免使用 mouse-x,y 公式来确定选择了哪张卡片。

使用事件驱动方法,我如何确定从手中选择了哪张牌?

最佳答案

AWT(和 Swing)组件通常是矩形的(与轴对齐)。

但这并不一定是这种情况 - 虽然实际边界必须是矩形,但组件使用的实际区域可以更小。 Component 支持 contains(Point) 方法,当出现点属于哪个组件的问题时,事件调度机制将调用该方法 - 例如,鼠标点击。 (不同组件的重叠将由父容器内的 z 顺序处理。)

您可以基于 Shape.contains() 方法实现此方法,使用仿射变换的矩形作为形状。您的每个旋转组件都会知道自己的形状(或从其 AffineTransform 中动态生成它,也将用于绘制自身的同一形状)。

有一个定制的 LayoutManager 也可以安排您的卡片。 (不要使用 CardLayout,尽管名称如此。)

我不确定我是否会遵循为每张卡片设置单独组件的方式,但您肯定需要一些表示旋转矩形的对象。

关于java - 如何在 Java 中检测 Image 对象上的鼠标单击事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6577227/

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