| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/04/2004 14:21:17
|
Makwanza
Thread.start()
Membro desde: 18/10/2003 18:29:38
Mensagens: 38
Localização: Rochester NY
Offline
|
E ae gujeiros!
Quando clico numa peça do meu tabuleiro eu quero que ele chame o metodo paint() para mudar sua posicao no tabuleiro! Estou usando o repaint() porem a imagem no tabuleiro nao eh atualizada.
Tentei colocar o repaint() dentro do paint() e funciona direitinho soh que como tem que ficar repintando o tabuleiro sem parar, ocupa toda a memoria do meu sistema.
Somente quando minimizo a tela e maximizo novamente que a peca esta "repintada" alguem poderia me ajudar?
Obrigado
Paulo Choi
|
Rochester Institute of Technology
Information Technology major
http://it.rit.edu
------- http://www.makwanza.com ------ |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/04/2004 16:03:17
|
HorseSteel
Entusiasta Java
Membro desde: 15/04/2004 10:12:12
Mensagens: 18
Localização: São Paulo
Offline
|
Vc pode colocar uma flag dentro do método paint()
se for pra vc pintar o tabuleiro inteiro de novo vc chama o método
super.paint() dentro do paint(), senão não o chama, o método repaint () deve ser chamao por outro método.
public void paint(Graphics g){
if(pintar == true) {
super.paint(g);
else {
}
}
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/04/2004 16:13:37
|
tanque
JavaTeenager
Membro desde: 17/04/2003 08:29:38
Mensagens: 171
Localização: Florianópolis / SC
Offline
|
Costumo utilizar outra tecnica para esse tipo de situacao: a ideia consistem em nao trabalhar diretamente com o Graphics do Componente, mas sim, ter uma copia , como um atributo de classe, de um outro Graphics, com as mesmas dimensoes/propriedades
Ai toda a alteracao eh feita nessa copia. O metodo paint, no caso, passa a ser uma simples copia do Graphics copia para o Graphis que vem pelo metodo paint.
Na pratica, deste modo, o metodo paint soh eh chamado quando ocorre eventos de minimizar/maximizar, ou se voce bota outra janela em cima do seu programa java e depois tira.
Ai quando voce muda a posicao de uma peca no tabuleiro, redesenhe o seu Graphics copia e copie ele para o graphics quente(usando o getGraphics). Voce podera entao arrancar todos os repaints do codigo. Alem disso, voce nao precisa copiar TODO o graphics copia para o graphics quente, voce pode monitorar somente as areas alteradas e copiar somente pedacos, o que economiza processamento.
Esse eh um motivo que eu acho que Applets nao deram certo. O pessoal programava muito mal com eles, nao otimizavam. Com esses tipos de otimizacao lerdiums 200, 300 podem rodar aplicacoes java e applets muito bem.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/04/2004 17:38:37
|
isaac
JavaChild
Membro desde: 24/12/2002 08:55:13
Mensagens: 116
Offline
|
olá....
tente usar ao invés do repaint()....
o revalidate()....
pode funcionar....
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/04/2004 14:21:40
|
Makwanza
Thread.start()
Membro desde: 18/10/2003 18:29:38
Mensagens: 38
Localização: Rochester NY
Offline
|
Pessoal, tentei usar o revalidate, depois validate a nada acontece.
Eu fiz algumas pesquisas e parece que o repaint() eh de low priority e por isso ele tem que esperar o meu mouseListener terminar pra dar um repaint().
Mas meu tabuleiro so recebe cliques..
Teriam alguma ajuda?
Tanque, eu li seu post , e deu pra ter uma ideia, mas da pra voce dar um exemplo com codigo se der por favor?
Obrjgado
Paulo Choi
|
Rochester Institute of Technology
Information Technology major
http://it.rit.edu
------- http://www.makwanza.com ------ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/05/2004 10:28:15
|
vinipitta
Entusiasta Java
Membro desde: 22/04/2004 15:10:38
Mensagens: 16
Localização: Salvador, BA, Brasil
Offline
|
Tente o seguinte:
O repaint chama o update que pinta o background do componente e depois chama o método paint.
O que o tanque sugeriu é chamado de double-buffering. Consiste em você criar uma imagem do mesmo tamanho da tela, obter o graphics dessa imagem e fazer todas as alterações e depois pintar a imagem por cima da tela.
|
[]´s
Vinícius Pitta Lima de Araújo
"A verdade está lá fora..." |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/08/2005 21:56:05
|
fpaimlima
Thread.start()
Membro desde: 09/03/2005 21:30:20
Mensagens: 43
Offline
|
Fera todos os jogos que eu já fiz eu usei alguma thread. experimente utilizar o repaint() dentro de uma thread. Para este caso eu utilizaria a classe Timer que é simples de se utilizar e sempre irá atualizar sua tela de tempos em tempos.
|
|
|
 |
|
|