Ir ao conteúdo

Problema com Thread.sleep()


Cinza

Posts recomendados

Postado

Comecei a aprender Java agora e gostaria de saber qual é o problema no código de um aplicativo para celular que eu fiz com MIDP 2.0:

package Iniciar;

import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.game.GameCanvas;
import java.util.Random;

public class Tela extends GameCanvas implements Runnable {
private Random i = new java.util.Random();
private int a = 0;
private boolean parado = false;

public Tela() {
super(true);
this.setFullScreenMode(true);
}
public void run() {
Graphics g = getGraphics();
while(!this.parado) {
int _r = (int)(2 * this.i.nextFloat()) * 255;
g.setColor(_r, 128, 128);
g.fillRect(0, 0, 240, 10 * ++this.a);
try {
Thread.sleep(500);
} catch(InterruptedException ex) {
ex.printStackTrace();
}
}
}
public void stop() { this.parado = true; }
}

Eu uso o NetBeans IDE 7.0 e fiz esse código consultado a referência e os exemplos do NetBeans.

O problema é que o código, da maneira como eu coloquei aí em cima, no emulador do computador aparece uma mensagem dizendo que o aplicativo não usa a tela e roda no "fundo", já no meu calular, apacece uma tela dizendo que está abrindo o aplicativo e não pára.

Se eu tiro o trecho do try {} catch {} (entre as linhas 22 e 26) o aplicativo mostra um retangulo, vermelho ou ciano o que é resultado esperado, mas apenas para o primeiro quadro.

Pelo que eu entendi o Thread.sleep() deveria servir para parar o aplicativo por um determinado tempo (no meu caso, meio segundo) e quando o aplicativo voltasse a funcionar, o laço voltaria ao começo e executava o código dentro dele novamente.

Postado

É preciso usar a função flushGraphics, que atualiza uma parte da tela. A sintáxe é:

flushGraphics( [B]x[/B] , [B]y[/B] , [B]largura[/B] , [B]altura[/B] );

Os atributos x, y, altura e largura são referentes á área retangular da tela a ser atualizada. O código é o mesmo, basta usar a função dentro do while.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!