如何将Rectangle对象发送到Java中的paint()方法

时间:2011-12-24 13:22:51

标签: java paint

我只是想知道如何让我的重写paint()方法来绘制Rectangle对象的轮廓。问题是Rectangle对象的维度和位置是任意的,因此paint方法不能包含说明如何以及在何处绘制Rectangle的代码。所以我想知道有没有办法可以以某种方式将Rectangle对象转换为可以通过paint(Graphics g)方法读取和绘制的东西?提前感谢您的帮助。

3 个答案:

答案 0 :(得分:4)

Rectangle实现了Shape接口,可以直接用Graphics2D对象绘制 - 这被传递到JComponent的paintComponent方法(以及paint方法,但我不建议你使用它) 。因此,您可以通过

轻松绘制矩形
// in your JPanel or JComponent extended class
protected void paintComponent(Graphics g) {
   super.paintComponent(g);
   Graphics2D g2 = (Graphics2D) g;
   g2.draw(myRectangle);  // assuming that this holds the Rectangle object
   //...
}

答案 1 :(得分:2)

java.awt.Graphics有一个drawRect方法可以做到这一点。其参数与Rectangle对象的成员匹配。

g.drawRect(r.getX(), r.getY(), r.getWidth(), r.getHeight());

答案 2 :(得分:2)

您的班级需要能够从代码中的其他位置请求矩形。

public interface RectangleProvider {
 Rectangle getRectangle();
}

public MyPanel extendeds JPAnel {
  private final RectangleProvider _provider;
  public MyPanel(RectangleProvider provider) {
    _provider = provider;
  }

  public void paintComponent(Graphics g) {
    Rectangle r = _provider.getRectangle();
    // ...
  }
}

这样,您就拥有了确定形状的代码。然后,根据需要,组件可以接受它并基于其绘制操作。