Tenho o seguinte problema:
- Tenho um Thread, no qual eu instancio a
minha classe Browser, reparem no
método SetaTexto() que eu chamo a cada segundo
veja:
class RodaConsulta extends Thread {
// Esta classe exibe uma mensagem no text área da consulta Browser AreaMsg; RodaConsulta(Browser Area)
{
AreaMsg = Area; } public void run() { AreaMsg.SetaTexto(""); int i = 0; while (true) { try { if (i == 0) { AreaMsg.SetaTexto("Aguarde...<br>Consultando indicadores em "+String.valueOf(i+1)+" segundo."); } else { AreaMsg.SetaTexto("Aguarde...<br>Consultando indicadores em "+String.valueOf(i+1)+" segundos."); } sleep(1000); } catch (Exception e) { // Parando o Thread caso ocorra algum erro System.out.println("Exceção: " + e); stop(); } i++; } } } - Este método
SetaTexto(), dentro da minha classe Browser, apenas altera o
valor de uma variável String e chama o método paint. O problema é que o paint()
só é executado na última vez em que o thread chama o método
SetaTexto(), vejam este método:
void SetaTexto(String Texto)
{
// Atualiza o texto exibido no browser // Zerando as coordenadas para escrever um novo texto Linha = 15; Coluna = 3; TextoEscreve = Texto; repaint(); } public void paint(Graphics g)
{
// Escrevendo a mensagem // Zerando a linha e coluna (caso mova-se a barra de rolagem) Linha = 15; Coluna = 3; if (imgOff == null) { imgOff = createImage(size().width, size().height); offG = imgOff.getGraphics(); } offG.setColor(new Color(255, 255, 224)); offG.fillRect(0,0,size().width, size().height); offG.setColor(new Color(0,0,100)); offG.setFont(FontePlain); Escreve(TextoEscreve, offG); g.drawImage(imgOff,0,0,this); imgOff.flush(); } - Me desculpem pela extensão do e-mail,
mas foi a única maneira que eu encontrei de exibir o meu problema. Se alguém
puder me ajudar ficarei muito agradecido mesmo.
[]'s
Ary
Junior
|