我有一个简单的 Java 程序,允许用户在 JPanel 上绘制矩形,然后移动它们、调整它们的大小并删除它们。
绘图面板实现了 MouseListener 和 MouseMotionListener。当事件被触发时,它会检查选择了哪个菜单选项(新矩形、移动、调整大小或删除),并做出相应的 react 。
选择“调整大小”选项时,监听器的方法执行以下操作:
MouseMoved 调用 boolean detectBoundary()。当返回 true 时,边界所属的矩形被设置为 Activity 矩形。
MouseDragged 调用 void moveBoundary,它会沿拖动手势的方向移动检测到的边界。
现在我要寻找的是一种使要移动的边界脱颖而出的方法。我可以用更粗的线条或不同的颜色重新绘制整个矩形,这是我现在将给定矩形设置为 Activity 矩形时所做的,但这不是我想要的。我只想重新着色一个边界。
可以处理 BorderFactory 的 createMatteBorder 方法的 setBorder 方法对于这些目的来说似乎是理想的,但我还没有找到一种方法来实现它。
这里有没有人知道我如何才能做到这一点?
我们将不胜感激所有建议。
最佳答案
你能调用 java.awt.Graphics 的 setColor(Color color) 方法吗?
听起来您可能会要求更复杂的东西,但我不确定具体是什么。 如果你想在同一个矩形上使用两种不同的边界颜色,我认为你必须使用两个矩形对象来做到这一点。顶部矩形将具有透明填充。这两个矩形需要一起移动,移动完成后第二个矩形需要从 View 中移除。
我不确定是否可以只改变一个简单矩形的一条边的颜色,但您可以用多个形状构建一个更复杂的形状,或者您可以将矩形绘制到 BufferedImage 中并绘制不同颜色的顶部线。
关于java - 单个 java.awt.Rectangle 可以用两种不同的边界颜色绘制吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2306909/