如何使用paintComponent()绘制不同的对象?

时间:2013-01-28 20:53:25

标签: java swing jpanel graphics2d paintcomponent

我试图在JPanel内绘制几个东西。我正在绘制形状(作品),我也想用JPAnel填充图片。 但是paintComponent()只需要一个参数。当我有一些用于绘制形状的额外代码时,这会变得复杂。

我的paintComponent()方法目前是这样的:

public void paintComponent(Graphics g) {


    g2 = (Graphics2D) g;
    for (int i = 0; i < shapes.size(); i++) {
        Shape s = (Shape) shapes.get(i);
        if (s != null)
            g2.draw(s);
    }
}

我经常搜索,找不到办法。

有谁知道如何做到这一点,或者可能有一些解决方法?

2 个答案:

答案 0 :(得分:1)

就像你绘制形状的方法一样,你需要保持对你想要在类中绘制的图像的引用,并以相同的方式引用它们。

以下是在paintComponent内绘制图像的所有示例,主题是

Nb - 我可能误读了这个,但你永远不应该自己打电话给paintComponent。它由Swing中的重绘引擎代表您调用

答案 1 :(得分:-1)

通常,在处理此类事情时,我只是转到GUI构建器。当我第一次学习Java时,我有一个项目要在一段时间内完成,并且无法弄清楚PaintComponent,所以我最终使用了NetBeans附带的GUI构建器。 根据您正在使用的IDE,它可能没有,所以如果您最终执行此操作,则可能必须切换到Eclipse或NetBeans等。否则,GUI构建器是解决PaintComponent和其他图形设计问题的一种非常简单的方法(只要您不反对使用生成的代码)。