在 Java awt 中绘制矩形
Posted
技术标签:
【中文标题】在 Java awt 中绘制矩形【英文标题】:Drawing Rectangles in Java awt 【发布时间】:2018-09-12 21:07:15 【问题描述】:我有兴趣使用 AWT 方法绘制一个 Rectangle 对象(我知道,它很旧)。我在论坛上查看了其他有答案的代码,但它们对我不起作用。这就是我想做的事情......
paint(Graphics g)
Rectangle r = new Rectangle(5,5,20,20);
g.drawRect(r.getX(),r.getY(),r.getWidth(),r.getHeight());
但我要做的是:
g.drawRect((int)r.getX().........);
并将每个值转换为 int。难道我做错了什么?我发现的代码示例有没有强制转换的解决方案。如果我不投,我会得到一个错误。当然,应该有更简单的东西。
提前致谢。
【问题讨论】:
根据文档, Rectangle 构造函数接受 int 值。 docs.oracle.com/javase/7/docs/api/java/awt/Rectangle.html 是的。构造函数接受 int 值,但 get 函数返回双精度值。 drawRect 接受整数。 【参考方案1】:从 javadoc here 我们可以看到,这些方法返回一个双精度值,而 Graphics 中的方法 drawRect 使用整数作为参数,如文档中的 here 所述,因此您必须将双精度转换为整数。
【讨论】:
我明白这一点。在这里,答案被投票了 14 次,但是不正确,那么呢? ***.com/questions/11745595/… @Nick 这确实很奇怪。我在那里添加了评论。让我们看看这是如何解决的。【参考方案2】:您可以将 Graphics 转换为 Graphics2D 以使用它的 draw() 方法来绘制“java.awt.shap”对象,如下所示:
paint(Graphics g)
Grahpics2D g2 = (Graphics2D) g;
Shape s = new Rectangle(5,5,20,20);
g2.draw(s);
【讨论】:
java.awt.Component 没有paint(Graphics2D)
方法,因此编写带有该签名的方法将毫无意义。也许您的意思是建议将给定 paint(Graphics)
的 Graphics 对象转换为 Graphics2D 对象?【参考方案3】:
这是一种简单的方法。我想通了:
paint(Graphics g)
Rectangle r = new Rectangle(5,5,30,30);
g.drawRect(r.x,r.y,r.width,r.height);
【讨论】:
假设这是“伪代码”。您不需要创建Rectangle
对象来调用 drawRect
方法。但从广义上讲,将Graphics
转换为Graphics2D
为您提供了许多不错的新选项,包括仅转换为graphics2D.draw(new Rectangle(...))
的选项等等。以上是关于在 Java awt 中绘制矩形的主要内容,如果未能解决你的问题,请参考以下文章