在java repaint()中调用2个函数,然后在func1()中调用,但首先调用func1()然后重新调用()。为什么?

时间:2011-06-27 04:53:11

标签: java repaint

我在java中使用了两个类class1class2,它们都在不同的包中。 class2中定义了paintComponent()test()。我按以下顺序从class1调用这些方法..

objclass2.repaint()
objclass2.test()
objclass2.repaint()

但我不知道为什么test()先被执行。接下来执行repaint() ..加上第二个repaint()不会全部执行..为什么会这样?

修改

for(int i=0;i<170;i++)
    {
        az.animate(i);
        try {
            Thread.sleep(160);
        } catch (InterruptedException ee) {
            ee.printStackTrace();
        }
    }

animate method(): -

pd.setCurrentAltitudeScaleValue(val);
azl.update();
azl.repaint();

并且在azl.paintComponent()我正在绘制一些东西..每次for循环执行时都会调用animate方法,但它不会再次调用repaint() ..意味着{ {1}}方法仅在一次又一次调用repaint时被调用..

1 个答案:

答案 0 :(得分:1)

我认为你的意思是paintComponent()表现出你提到的行为。请记住:

  • 当你调用repaint()时,它基本上标记组件说“这个组件需要在事件线程的下一个方便时刻重新绘制”
  • 可以合并对paintComponent()的调用。

如果程序的设计确实依赖于调用paintCompoent()的顺序,那么我建议你选择不同的设计。