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