Ajuda com Threads por favor!  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
[BlacK]
JavaBaby

Membro desde: 13/11/2007 13:56:39
Mensagens: 92
Offline

Galera, tenho esse código pro carro andar, e oque ocorre é que ele ta andando t udo certo sozinho (simplifiquei os metodos dos cases só pra dar uma idéia). Cada tecla que o usuário aperta ele vai para o lado correto sozinho, mas oque ocorre é que cada tecla ele cria uma nova Thread, entao se aperto pra ele ir pra cima ele vai na velocidade correta, mas se aperta direita ou para baixo, ele vai na direção correta só que mais rápido e vai ficando mais e mais rápido.

Será que tem como evitar que essa thread seja criada mais de uma vez? Alguém poderia me ajudar? Tentei singleton mas nao deu muito c erto, nao sei como poder no código a instancia com o run.



davidbuzatto
Moderador
[Avatar]

Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline

Olá.

Fiz um exemplo aqui para vc. Apenas uma thread fica executando e mandando o painel se repintar.

Carro.java


ThreadCarro.java


PainelCarro.java



Janela.java


Qualquer dúvida avise.

[]´s

Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."

http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm
[WWW]
alexandrehdk
Debugger

Membro desde: 06/02/2009 14:25:23
Mensagens: 54
Offline

Péraí, quem é que chama o método andarCarro() ? Se esse método já é executado a cada evento de tecla, então você não tem porquê de executar uma thread a cada vez que uma tecla é pressionada.
Já se você quer que ele mantenha o carro andando em uma determinada direção indefinidamente até alguém dar outro comando para mudar a direção, aí é melhor postar mais do código para tentarmos adaptá-lo.

Alexandre HDK
[BlacK]
JavaBaby

Membro desde: 13/11/2007 13:56:39
Mensagens: 92
Offline

O andarCarro() é executado por um keyListener que fica na JFrame principal.

O lance é que se o cara apertar pra frete o carro deve continuar andando pra frente até ele apertar pro lado ou pra trás, entende?

aí esse método que cada vez que o keylistner dispara o evento ele cria uma Thread e acho que é isso que está errado. Teria que criar a Thread no Jframe principal?

valeu :d
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20578
Localização: Curitiba/PR
Offline

[BlacK wrote:]aí esse método que cada vez que o keylistner dispara o evento ele cria uma Thread e acho que é isso que está errado. Teria que criar a Thread no Jframe principal?


O ideal é fazer como o David Postou. Dá uma estudada no código dele, está muito bom.

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team