我只是想知道如何让我的重写paint()方法来绘制Rectangle对象的轮廓。问题是Rectangle对象的维度和位置是任意的,因此paint方法不能包含说明如何以及在何处绘制Rectangle的代码。所以我想知道有没有办法可以以某种方式将Rectangle对象转换为可以通过paint(Graphics g)方法读取和绘制的东西?提前感谢您的帮助。
答案 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();
// ...
}
}
这样,您就拥有了确定形状的代码。然后,根据需要,组件可以接受它并基于其绘制操作。