Threads

8 respostas
CristianPalmaSola10

public class Desenha extends Thread {

@Override
    public void run() {
        paint(null);
    }

    public void paint(Graphics g) {
        if (fornoLigado) {
            g.setColor(Color.white);
            g.fillRect(50, 50, 500, 500);
        } else {
            if (abrir) {
                g.setColor(Color.yellow);
                g.fillRect(50, 50, 500, 500);
            } else {
                g.setColor(Color.green);
                g.fillRect(50, 50, 500, 500);
            }
        }
    }
}

alguem sabe me dizer por que ocorre a exception java.lang.NullPointExcepton nesse codigo quando eu o chamo pra ele desenhar um retangulo na tela???

Obrigado pela ajuda[quote]

8 Respostas

yoshikichi

CristianPalmaSola10:
public class Desenha extends Thread {

@Override
    public void run() {
        paint(null);
    }

    public void paint(Graphics g) {
        if (fornoLigado) {
            g.setColor(Color.white);
            g.fillRect(50, 50, 500, 500);
        } else {
            if (abrir) {
                g.setColor(Color.yellow);
                g.fillRect(50, 50, 500, 500);
            } else {
                g.setColor(Color.green);
                g.fillRect(50, 50, 500, 500);
            }
        }
    }
}

alguem sabe me dizer por que ocorre a exception java.lang.NullPointExcepton nesse codigo quando eu o chamo pra ele desenhar um retangulo na tela???

Obrigado pela ajuda

Simples você invoca:

Passando null, no método paint você receberá a exception NullPoint, pq como q pode chamar g.setColor(Color.white);
se está sem referencia, ou seja nulo.

CristianPalmaSola10

Mas e como fazer pra colocar cor entaum?

valeu

yoshikichi

CristianPalmaSola10:
Mas e como fazer pra colocar cor entaum?

valeu

Pensa comigo, você está passando null certo. vamos imaginar que você tinha uma string qlq q também é um objeto:

String elaENull = null;
//se tentar isso
elaENull.toString();
//concorda que irei receber uma exceção, pq elaENull não está referenciando nenhum objeto.

No seu caso é o paint, Graphics estrá nulo.
vc tem q passar a instancia do seu JFrame se estiver utilizando ele.
Agora pq vc tem o paint dentro de uma Thread eu não consegui entender sua lógica.
http://www.herongyang.com/Swing/JFrame-Draw-Graphics-paint-on-Frame.html

ViniGodoy

No lugar de paint(null), chame simplesmente repaint();

L

Aonde você vai desenhar o retangulo?

Caso for desenhar em um JFrame terá que sobreescrever o metodo…

ex:

public class MeuFrame extends JFrame{

public MeuFrame(){
super();
}
@Override
	public void paint(Graphics arg0) {
		super.paint(arg0);// Mantem isso para ser  
                                     //desenhado o resto do frame
//---aqui em baixo vc coloca o que vc deseja desenhar------------



	}

}

flw

CristianPalmaSola10

Valeu pessoal com o ajuda de vcs consegui resolve meu problema!!!

ViniGodoy

E como você fez?

CristianPalmaSola10
public void paint(Graphics g) {

super.paint(g);

if (fornoLigado) {

g.setColor(Color.red);

g.fillRect(50, 50, 500, 550);

} else {

if (abrir) {

g.setColor(Color.yellow);

g.fillRect(50, 50, 500, 550);

} else {

g.setColor(Color.green);

g.fillRect(50, 50, 500, 550);

}

}

}

reescrevi o metodo paint desse jeito ai e o chamo dentro da thread assim

public class Desenha extends Thread {

@Override
    public void run() {
        repaint();
    }
}

assim os desenhos na tela sao atualizados conforme a o botao que o usuario clica

Criado 17 de novembro de 2010
Ultima resposta 17 de nov. de 2010
Respostas 8
Participantes 4