Używanie wątków do malowania panelu w Javie

Piszę program, który ma wiele różnych widoków. Jedna z nich jest dość intensywna graficznie (wyświetla połączony wykres). Inni wyświetlają tylko małe, ale złożone schematy.

Odkrywam, że czas malowania głównego widoku jest dość długi (nawet malowanie obecnie widocznego obszaru), a podczas malowania reszta interfejsu staje się bardzo wolna.

Moje pytanie brzmi: czy mogę stworzyć nowy wątek do obsługi obrazu - a jeśli tak, czy spowoduje to wzrost wydajności, podejrzewam, że to nie będzie. Próbowałem:

tworzenie abstrakcyjnych klas ThreadPaintablePanel, z których moje złożone widoki dziedziczą.

public abstract class ThreadPaintablePanel extends JPanel{
 private Thread painter;
 public abstract void paintThread(Graphics g);

 protected void callPaintThread(Graphics g){
   if(painter != null){
     painter.interrupt();
   }
   painter = new Thread(new PaintRunnable(this, g));
   painter.start();
 }
} 

Potem w moich skomplikowanych poglądach mójpaintComponent metoda jest po prostu:super.callPaintThread(g);

PrzesłoniętypaintThread metoda zawiera cały mój kod malarski. Powoduje to jednak niepomalowane panele. Czy przegapiłem coś oczywistego?

Dzięki

questionAnswers(2)

yourAnswerToTheQuestion