为什么这个JPanel仍然被重新粉刷?

时间:2016-07-26 14:26:10

标签: java swing awt

我有自定义JLayeredPane和两个自定义子JPanel。我在while的{​​{1}}循环中重新绘制所有内容。我使用Thread来停止重新绘制RepaintManager.currentManager(backPanel).markCompletelyClean(backPanel); backPanel。至于不浪费系统资源。但是,这不起作用。正如我们在JPanel方法中看到的,如果您运行并编译下面的代码,您将看到语句" Reccursion"在paintComponent方法的System.out.println("Reccursion")方法调用中,在输出中以递归方式重复。

为什么paintComponent backPanel仍然被重新绘制,为什么仍在调用方法JPanel,当我使用System.out.println("Reccursion")时。

RepaintManager.currentManager(backPanel).markCompletelyClean(backPanel);

1 个答案:

答案 0 :(得分:0)

方法“paintComponent”经常被调用而没有你的“许可”(它也给了我很多时间......) 您无法对此做任何事情,只是不要在此方法中每次都生成新数据,或者外观可能会经常更改。 祝你好运

https://books.google.fr/books?id=KXz6AQAAQBAJ&pg=PA211&lpg=PA211&dq=paintcomponent+called+repeatedly&source=bl&ots=AEql59yy51&sig=Ezny1GptXRthd1e0tuQFdM5peoo&hl=fr&sa=X&ved=0ahUKEwjun4j6rJHOAhWK2xoKHYaPCEQ4ChDoAQgkMAE#v=onepage&q=paintcomponent%20called%20repeatedly&f=false