Tak uz me double buffering skoro chodi. ma to jeden hacek.
takto mam metodu paint() v tride MujApplet ktera dedi po JApplet
Kód:
public void paint(Graphics g){
if (prekreslitPredka){
super.paint(this.getGraphics());
}
prekreslitPredka=true;
if (offScreen==null){
offScreen = createImage(500,500);
bufferGraphics = offScreen.getGraphics();
}
jPanelKresleni.getGraphics().drawImage(offScreen,0,90,this);
}
a takto je metoda co vola paint()
Kód:
public void dolu(int posun) {
for (int i = 0; i < posun; i++) {
bufferGraphics.clearRect(50,99+i,51,51);
bufferGraphics.drawRect(50,100+i,50,50);
prekreslitPredka=false;
paint(jPanelKresleni.getGraphics());
try {
Thread.sleep(10);
} catch (InterruptedException f) {
}
}
}
A problem je v tom, ze kdyz v metode paint volana metoda predka super.paint(this.getGraphics());
tak animace zacne problikavat. To jsem vyresil booleovskou promennou prekreslitPredka, kdyz je false tak se metoda predka paint() nezavola, ale to ma taky hacek. A to ten, ze se pri animaci neprekresli GUI kdyz pres nej pretanhu jine okno... Animace je kreslena na graficky kontech JPanelu...
EDIT: Ted jsem koukal ze kdyz se v metode paint vola super.paint(this.getGraphics); tak vyskoci vyuziti procesoru az na 60% pokud se metoda nevola tak je vyuziti temer nulove...