在 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 中绘制矩形的主要内容,如果未能解决你的问题,请参考以下文章

通过按钮将矩形绘制到画布上

在Java中为网格创建绘制矩形(填充黑色)函数

与 Java AWT 的矩形交集

java对于绘制的矩形,如何用鼠标双击可以选中这个矩形,并且可以通过方法在举行框中进行文本编辑.

Java基础 awt 生成矩形图片并向内写入字符串

如何在libgdx使用矩形类来绘制矩形边框?