Domanda

Nel tentativo di dipingere lentamente un rettangolo utilizzando due chiamate di metodo .fillrect con Thread.sleep chiamata tra ogni metodo. Quello che sta accadendo è che il metodo di sonno è sempre chiamato prima il rettangolo è inizializzato, così sembra che il rectange è già stata dipinta. Voglio solo dipingere una parte del rectange, pausa di cinque secondi e poi dipingere antother parte.

Ecco il mio codice -

public void paint(Graphics g, int w, int h) {
    g.drawRect(0, 0, w - 1, h - 1);
    g.fillRect(0, 0, 10, h-1);

   try {
    Thread.sleep(5000);
} catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

    g.fillRect(0, 0, 50, h-1);
 }

Grazie

È stato utile?

Soluzione

E 'sempre un'idea molto male per causare un thread evento per blocco, non importa quale sia la piattaforma.

Che cosa si dovrebbe fare è definire le variabili da qualche parte quel negozio l'estensione attuale della zona che si desidera verniciato. Aggiornare le variabili su un thread separato (è possibile bloccare tutto quello che vuoi quel filo) e chiamare il metodo repaint () per pianificare un ridisegno ogni volta che si aggiorna le variabili.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top