| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2009 11:53:10
|
[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.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2009 12:43:06
|
davidbuzatto
Moderador
![[Avatar]](/images/avatar/7ba6d33c373fea56b7258003b16c68e5.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2009 13:34:06
|
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2009 18:07:13
|
[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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/10/2009 19:44:29
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
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 |
|
|
 |
|
|