Java 如何使用paintComponent()而不调用多个;绘制();方法?

Java 如何使用paintComponent()而不调用多个;绘制();方法?,java,swing,graphics,awt,paintcomponent,Java,Swing,Graphics,Awt,Paintcomponent,我是java新手,我正在尝试创建一个“游戏” 在我的游戏中,我的主类中有paintComponent方法: public void paintComponent(Graphics g) { super.paintComponent(g); setBackground(new Color(120,120,255)); BackgroundObject.drawGrass(g,385); BackgroundObject.drawRoad(g,420); Ba

我是java新手,我正在尝试创建一个“游戏”

在我的游戏中,我的主类中有paintComponent方法:

public void paintComponent(Graphics g) {
    super.paintComponent(g);
    setBackground(new Color(120,120,255));
    BackgroundObject.drawGrass(g,385);
    BackgroundObject.drawRoad(g,420);
    BackgroundObject.drawSun(g,-20,-20);
    myCar.draw(g);
    debugger.draw(g);
}
问题是,我要绘制的每个对象都必须放在paintComponent方法下(比如当我要绘制汽车时,我必须将我的car.draw()放在paintComponent下)

有没有办法做到这一点

public void paintComponent(Graphics g) {
    super.paintComponent(g);
    setBackground(new Color(120,120,255));
    visualComponents.draw(g);
    GUI.draw(g);
}
调用visualComponents.draw()时,任何类都可以告诉visualComponent类绘制对象

例: 我的汽车类告诉visualComponent在visualComponent.draw(g)时绘制车辆;被称为

总而言之,我基本上是在询问大多数人如何在程序中使用paintComponent的结构

我一直在谷歌搜索,但找不到答案


如果我的问题让您困惑,请告诉我。

您可以将元素添加到集合中,然后迭代集合并在循环中绘制每个元素。这可以在几行代码内绘制100个对象

这将迭代
区域
实例的集合,并使用以下方法绘制它们:

    for (Area obstacle : obstacles) {
        if (doAreasCollide(obstacle, player)) {
            g.setColor(Color.RED);
        } else {
            g.setColor(Color.GREEN);
        }
        g.fill(obstacle);
    }


3个绿色和1个红色障碍物在集合中,而球(黄色小圆圈)是分开绘制的。

谢谢,我会研究一下。我只需要标记为接受即可。很高兴你把它整理好了。:)对可以让对象自己绘制。有关解释和说明,请参阅本文。