我目前正在研究Swing,并且遇到了精神障碍。我知道我想绘制到JPanel时需要调用paintComponent方法。我已经阅读了几个地方不应将逻辑放置在paintComponent块中。如果我想要一个计时器来确定何时绘制某些东西,我是否不必从另一个类的另一个方法调用paintComponent并创建该类的实例,该实例也可以在paintComponent中扩展JPanel?

我认为我要避免的是以下情况...

public void paintComponent(Graphics g)
{


    super.paintComponent(g);
    g.drawImage(blah,blah,blah);

    if(timesUP==true){
    paintSomethingElse(g);

    }
    repaint();
}


相反,我得到的印象是,我应该为if语句的逻辑创建一个完全不同的方法,并以某种方式从单独的方法进行绘制。

我不明白什么?

这已经被具体回答了吗?我找不到一个答案,无法真正帮助我理解如何有效地将两者分开,从而在同一JPanel上绘制多个图形。

最佳答案

这取决于。如果逻辑与实际绘画过程有关,则没有理由不能将其放入paintComponent方法。

您要避免的是将逻辑放入paintComponent中,以更改绘制过程的状态,因为paintComponent可能由于多种原因而被调用,其中许多原因您无法控制。

paintComponent方法应该绘制组件的当前状态,也就是说,不应参与更改或更新该状态(这实际上可能导致无限的重新绘制循环,这将消耗您的CPU周期)

关于java - 将逻辑集成到paintComponent中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25928338/

10-13 05:48