我目前正在研究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/