由于这是功课,我不想要一个完整的解决方案,而是在正确的方向上推动我应该看的东西(因此为什么没有代码)。在ArrayList中获取最新形状以绘制其他形状 - Java
我有一个处理鼠标输入的类。从该类中检查用户是否按住鼠标按钮,然后将该形状设置为活动形状。当用户拖动形状时,形状随之移动并相应地改变位置。一旦鼠标被释放,selectedShape被设置为null,并且面板正在重新绘制。
我希望selectedShape在所有其他形状之上,所以如果所选形状被拖拽到任何其他形状上,它就是盈方。
从我所了解的repaint()方法重新绘制它们,因为它们出现在ArrayList中,我需要使用另一种方法在顶部绘制该形状(从视觉上讲)。
我会在哪里添加此功能?在MouseHandler类中?
类包括那些相关: MyShape的 - 父类 三角形,正方形,圆形 - 孩子 - 有它自己的draw(G)的方法和setPosition两种 MouseHandler - 鼠标移动和调用每个形状设置新的位置。 MyShapeHandler - 添加/删除列表中的形状 面板 - 创建形状的实例并使用MyShapeHandler帮助方法addShape添加到ArrayList。使用drawComponent(g)在ArrayList中绘制每个形状。 窗口 - 添加面板的JFrame
如果不需要形状对象的特定顺序,则可以使用List接口提供的'set(index,object)'交换最后一个选定对象和arraylist中的最后一个对象。您应该在MouseReleased方法的MouseHandler中执行此操作。 – skubski
鉴于形状可能如何重叠或完全被其他形状包围,我会保留一个单独的列表(如'JList')的所有形状。该列表将允许选择“当前形状移动”。然后,您可以简单地通过绘画,首先绘制整个形状列表,然后最后绘制选定的形状(第二次)来模拟它在顶部。 –