用Java重新连续重绘

Ano*_*181 1 java swing multithreading paint

我有一个使用线程的Java程序.在我的run方法中,我有:

public void run() {
    while(thread != null){
        repaint();
        System.out.println("hi");
        try {  
            Thread.sleep(1000);  
        } catch (InterruptedException e) {  
            break;  
        }  
    }
}

public void paintComponent(Graphics g) {
    // painting stuff
}
Run Code Online (Sandbox Code Playgroud)

问题是执行了run方法,但是paintComponent没有调用该节.如果这不是重新绘制组件的正确方法,那么我应该如何重新绘制它?

And*_*son 5

Cal从Swing重新粉刷Timer.这不会阻止GUI,并且会在计时器中指定的任何时间间隔内发生.当然,根据Swing/AWT绘画的性质,如果将计时器设置为重复得太快,则可以合并对绘画的调用(实际上被忽略).

此外,请确保该方法是使用以下方式覆盖:

@Override
public void paintComponent(Graphics g){
Run Code Online (Sandbox Code Playgroud)