gpt4 book ai didi

java - 在 Java 中将形状转换到组件中?

转载 作者:太空宇宙 更新时间:2023-11-04 08:24:26 24 4
gpt4 key购买 nike

如何将形状(如圆角矩形)键入到组件中?

最佳答案

转换只是将对象的引用更改为不同的表示形式,而不是将对象转换为不同类型的对象。

给出一些组合类的示例,您可以将 Shape 转换为 Square,前提是该 Shape 实际上已经是 Square:

Shape shape = new Square();
Square square = (Square) s; // this will be okay!

这只是暴露与正方形相关的对象的现有额外行为,而不是将其转换为正方形。您不能这样做,例如:

Shape shape = new Square();
Circle circle = (Circle) shape; // this will throw a ClassCastException

因为形状实际上并不是一个圆形,并且您可能会暴露对底层对象实际上没有意义的行为(例如 getPerimeter())。

同样,在您的情况下,形状不是组件,而且永远不会是组件,因此您不能将其转换为组件。您无法执行强制转换来公开与组件相关的行为(添加监听器),因为 Shape 类不支持此行为。即使向其添加监听器确实有意义,形状类也不会从界面接收事件消息,因为它一开始就没有作为组件添加到界面中。想必您正在手动将形状绘制到组件上,因此您应该已经了解它们不是组件层次结构的一部分。

正如您所建议的,处理此问题的最佳方法是假设您已经达到在组件内绘制形状的程度,即手动检查相关 MouseEvent 的 x 和 y 坐标是否位于每个 Shape 内。

如果您想从一开始就将它们视为组件,则必须为每个形状创建组件,并使用 LayoutManager 将它们添加到容器中,就像构建界面的其余部分一样。正如您所说,这将涉及创建一个“自定义组件”,它不是准备使用的类或方法的名称,而是意味着创建您自己的组件子类,它也许可以在其构造函数中采用 Shape 参数。 Here is an example我发现创建一个圆形的自定义按钮组件,经过一些修改应该可以满足您的需求。

您在上一条评论中的大部分内容基本上回答了您自己的问题,这希望能帮助您理解如何:)。

干杯,希望这有帮助。

关于java - 在 Java 中将形状转换到组件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8884151/

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