[RESOLVIDO] Pausar Aplicação ?  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
BrunoRP
Thread.start()

Membro desde: 07/01/2012 20:13:29
Mensagens: 27
Offline

Começei a estudar java faz alguns meses, e decidi criar um desafio para mim mesmo e esse desafio foi fazer um jogo da memória. Ele está 99% pronto porém ocorre um pequeno erro de lógica que não consigo arrumar.

O código encontra-se logo abaixo e os comentários dizem a respeito desse erro.A imagem do segundo botão não aparece pela rapidez que a aplicação é rodada, porém não consigo para-la para mostrar essa imagem. Então gostaria de saber se existe algum outro método de pause sem ser o Thread.sleep ?

Mas se for outro erro, gostaria que me ajudassem, pois estou a dias tentando concertar isso, porém sem êxito.






Obrigado

This message was edited 1 time. Last update was at 11/02/2012 15:58:19

jeroqueiroz
Virtual Machine Man
[Avatar]

Membro desde: 15/05/2007 22:07:24
Mensagens: 522
Localização: Bahia
Offline

De uma olhada em outros códigos já feitos e você confere com o seu..

http://www.guj.com.br/java/115072-jogo-da-memoria-em-java-codigo-fonte

Att,
Jeremias Santos - http://twitter.com/jeroqueiroz
JavaC - Java Community - http://www.javac.com.br
Twitter Fórum JavaC - http://twitter.com/javac_forum
[Email] [WWW] [Yahoo!] [MSN]
BrunoRP
Thread.start()

Membro desde: 07/01/2012 20:13:29
Mensagens: 27
Offline

jeroqueiroz wrote:De uma olhada em outros códigos já feitos e você confere com o seu..

http://www.guj.com.br/java/115072-jogo-da-memoria-em-java-codigo-fonte


Obrigado por tentar ajudar, porém não me ajudou muito pois a lógica usada nos outros jogos são muito diferente da que eu usei, ae no caso terei de mudar praticamente tudo :S; Se alguem pudesse me ajudar, eu agradeceria ^^
Vingdel
JavaEvangelist
[Avatar]

Membro desde: 19/11/2006 22:09:57
Mensagens: 358
Localização: Cabo Frio - RJ
Offline

Bom dia, BrunoRP!

Posta o código do for todo... Gostaria de ver o fechamento do segundo if e do for para sugerir uma mudança.

Abraço!

This message was edited 2 times. Last update was at 05/02/2012 22:51:51


  • Caso tua dúvida esteja sanada edite tua primeira postagem no tópico e adicione [RESOLVIDO] ao assunto.
  • Poste teu código entre as tags [code] ... [/code].



  • BrunoRP
    Thread.start()

    Membro desde: 07/01/2012 20:13:29
    Mensagens: 27
    Offline

    Vingdel wrote:Bom dia, BrunoRP!

    Posta o código do for todo... Gostaria de ver o fechamento do segundo if e do for para sugerir uma mudança.

    Abraço!


    Opa aqui está:



    Obrigado

    This message was edited 1 time. Last update was at 06/02/2012 18:33:49

    Vingdel
    JavaEvangelist
    [Avatar]

    Membro desde: 19/11/2006 22:09:57
    Mensagens: 358
    Localização: Cabo Frio - RJ
    Offline

    Boa noite, BrunoRP!

    Além das modificação com o intuito de tentar resolver teu problema, fiz algumas modificações para dar uma enxugada no código. Ahh, estou considerando que seu for só tem esse código, afinal ou ficou faltando parte do código ou faltou apenas as chave de fechamento do for no trecho que você colocou.

    Veja se assim fica legal:

    Abraço!

  • Caso tua dúvida esteja sanada edite tua primeira postagem no tópico e adicione [RESOLVIDO] ao assunto.
  • Poste teu código entre as tags [code] ... [/code].



  • BrunoRP
    Thread.start()

    Membro desde: 07/01/2012 20:13:29
    Mensagens: 27
    Offline

    Boa Noite !

    Muito Obrigado Vingdel ^^.. Entendi perfeitamente seu código, álias eu havia tentado fazer isso antes.. Só que há um erro quando clico em qualquer um dos botões no caso:

    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at CenarioI.actionPerformed(CenarioI.java:314)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$000(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.awt.EventQueue$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$2.run(Unknown Source)
    at java.awt.EventQueue$2.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

    A linha 314 refere-se a á :

    Desculpe o encomodo

    This message was edited 2 times. Last update was at 06/02/2012 23:40:13

    Vingdel
    JavaEvangelist
    [Avatar]

    Membro desde: 19/11/2006 22:09:57
    Mensagens: 358
    Localização: Cabo Frio - RJ
    Offline

    Bruno, esse erro foi gerado pela alteração que fiz?

    Incômodo nenhum...

  • Caso tua dúvida esteja sanada edite tua primeira postagem no tópico e adicione [RESOLVIDO] ao assunto.
  • Poste teu código entre as tags [code] ... [/code].



  • BrunoRP
    Thread.start()

    Membro desde: 07/01/2012 20:13:29
    Mensagens: 27
    Offline

    Sim, e é isto que está a me incomodar, pois a principio fiz o código como o que você postou e depois fiz este que postei. Estive pensando aqui e percebo que o erro encontra-se nesse if :



    pois quando o retiro, a imagem do segundo botão clicado aparece sem problemas.

    Outro possivel erro:

    Esse if, eu só fecho no fim da aplicação, pois quando fecho pós o repaint();, o restante do código não roda.. logo quado clico nos botões nada se altera, e ao meu ver ele teria de ser fechado após o repaint, como você colocou em seu código;



    Estou abismado com isso, pq este é um projeto que estou fazendo para aumentar meu raciocio lógico e a minha manipulação com interface gráfica, pois começei com java a pouco tempo e o engraçado que o jogo está perfeito só da esse "maldito" erro rsrs.

    E novamente muito obrigado Vingdel ^^

    Vingdel
    JavaEvangelist
    [Avatar]

    Membro desde: 19/11/2006 22:09:57
    Mensagens: 358
    Localização: Cabo Frio - RJ
    Offline

    Você se importaria de disponibilizar o projeto pra eu dar uma olhada?

  • Caso tua dúvida esteja sanada edite tua primeira postagem no tópico e adicione [RESOLVIDO] ao assunto.
  • Poste teu código entre as tags [code] ... [/code].



  • BrunoRP
    Thread.start()

    Membro desde: 07/01/2012 20:13:29
    Mensagens: 27
    Offline

    Vingdel wrote:Você se importaria de disponibilizar o projeto pra eu dar uma olhada?


    Claro ! Por e-mail ou aqui mesmo ? ^^
    Vingdel
    JavaEvangelist
    [Avatar]

    Membro desde: 19/11/2006 22:09:57
    Mensagens: 358
    Localização: Cabo Frio - RJ
    Offline

    Pode ser por e-mail: [endereço removido pelo autor]

    This message was edited 1 time. Last update was at 07/02/2012 01:22:22


  • Caso tua dúvida esteja sanada edite tua primeira postagem no tópico e adicione [RESOLVIDO] ao assunto.
  • Poste teu código entre as tags [code] ... [/code].



  • BrunoRP
    Thread.start()

    Membro desde: 07/01/2012 20:13:29
    Mensagens: 27
    Offline

    Enviado !

    Obrigado
    Vingdel
    JavaEvangelist
    [Avatar]

    Membro desde: 19/11/2006 22:09:57
    Mensagens: 358
    Localização: Cabo Frio - RJ
    Offline

    Boa Tarde, BrunoRP!

    Bom, meu camarada, como combinado voltei para trazer uma sugestão para resolver o teu "problema".

    Para resumir vou colar aqui a sugestão de como pode ficar teu for, segue trecho:Além dessa modificação no for, você deve criar a seguinte classe interna:Basta colocá-la após o fechamento do método actionPerformed(ActionEvent e), um exemplo fica assim:


    Bruno, vi que teu código tem muita coisa redundante e notei que há alguns endereços de imagens errados, acredito que algumas imagens não estejam aparecendo corretamente quando você roda o jogo aí na tua máquina, ou pode ser que não rode na máquina de outras pessoas, pois aqui tive que corrigir praticamente todas.

    Um exemplo de redundância do teu código:Veja a parte que comentei do código, essas configurações devem ser feitas dentro da classe, assim você não precisa ficar definindo a cada vez que você instanciá-la, o setVisible(), sim, deve ser feito ao instanciar a classe. Estudando seu código para entender seu raciocínio vi você fazendo isso em vários lugares que poderiam ser evitados com essa sugestão.

    Sem querer ser chato, outro detalhe que notei foi quanto ao método Pause() da classe CenarioI, que está assim:Se você quer entrar com o argumento para ele em segundos, você deveria fazer a multiplicação por 1000 e não por 500, além disso convém você nomeá-lo como "pause" (primeira letra minúscula).
    Notei também que você tem uma classe chamada Botão, sugiro que você retire o "~" deixando apenas "Botao" para evitar problemas, o mesmo vale para diretórios e arquivos usados no projeto.

    Fico por aqui, espero que eu tenha ajudado e me desculpe pela demora, mas as coisas estão um pouco corridas e só tive realmente tempo de olhar teu projeto ontem de noite e hoje.

    Gostaria de saber se alguém tem opiniões diferentes da minha para expor, principalmente quanto ao uso do Timer.

    Abraço!

    This message was edited 1 time. Last update was at 11/02/2012 16:07:32


  • Caso tua dúvida esteja sanada edite tua primeira postagem no tópico e adicione [RESOLVIDO] ao assunto.
  • Poste teu código entre as tags [code] ... [/code].



  • BrunoRP
    Thread.start()

    Membro desde: 07/01/2012 20:13:29
    Mensagens: 27
    Offline

    Nossa, muito obrigado por tudo ! Consegui fazer o jogo rodar perfeitamente e só tenho a agrade-lo com isso.

    Abraço !
     
    Índice dos Fóruns » Java Básico
    Ir para:   
    Powered by JForum 2.1.8 © JForum Team