Ir para conteúdo
Fórum CódigoFonte.net
Entre para seguir isso  
joaoalves89

Interfaces grafica - tratamentos de eventos

Recommended Posts

Boa tarde Pessoal! Eu tenho 1 trabalho para a faculdade na qual tou a ter alguns problemas no tratamento de eventos.

Eu inicialmente tenho uma pilha de cartoes da qual tira um cartao e coloco a imagem desse cartao num label com o nome "labelCartaoVirado". Depois tenho mais 3 Labels, em que cada um faz de Pilha para possiveis sequencias de cartoes. E tenho mais 3 labels que vao ser para as chamadas pilhas auxiliares.

Ao utilizador é possivel pegar no cartao que esta na labelCartao virado e adicionar a qualquer uma das labels, ou das sequencias, ou das pilhas auxiliares.

Ao utilizador é possivel tambem pegar num cartao duma das labels das pilhas auxiliares e adicionar a uma das labels das pilhas das sequencias.

Eu tenho uma class: private class TrataEventoRato extends MouseAdapter{

O codigo vai em baixo, mas nao ser muito vou colocar so o mousePressed da labelVirarCartao e o mouseReleased duma das sequencias:

public void mousePressed(MouseEvent e){

if(e.getSource()==labelCartaoVirado){

carregouNoCartao = true;

cartao = pilhaCartoes.virarCartaoMontePrincipal();

labelSequencia1.addMouseListener(ratoHanderEvent);

labelSequencia2.addMouseListener(ratoHanderEvent);

labelSequencia3.addMouseListener(ratoHanderEvent);

labelSequenciaAuxiliar1.addMouseListener(ratoHanderEvent);

labelSequenciaAuxiliar2.addMouseListener(ratoHanderEvent);

labelSequenciaAuxiliar3.addMouseListener(ratoHanderEvent);

// labelCartaoVirado.removeMouseListener(ratoHanderEvent);

}

}

public void mouseReleased(MouseEvent e){

if(e.getSource()==labelSequencia1){

if(carregouNoCartao==true){

boolean result = sequencia1.adicionarCartao(cartao);

if(result==true){

labelSequencia1.setIcon(retornaImageIcon(retornaImformaçaoCartao(sequencia1.retornarCartaoTopo())));

pilhaCartoes.removerCartaoPilhaPrincipal();

limparLabelCartaoVirado();

alterarNumeroJogadas();

}

// labelCartaoVirado.addMouseListener(ratoHanderEvent);

labelSequencia1.removeMouseListener(ratoHanderEvent);

labelSequencia2.removeMouseListener(ratoHanderEvent);

labelSequencia3.removeMouseListener(ratoHanderEvent);

labelSequenciaAuxiliar1.removeMouseListener(ratoHanderEvent);

labelSequenciaAuxiliar2.removeMouseListener(ratoHanderEvent);

labelSequenciaAuxiliar3.removeMouseListener(ratoHanderEvent);

carregouNoCartao=false;

}

}

Ate aqui tudo bem, ele faz as coisas direitas e adiciona tudo direito. No entanto quando tentei adicionar mousePressed ás labels das pilhas auxiliares e adicionei mouseReleased as pilhas das sequencias, ele simplesmente nao faz as coisas direitas. Não sei se é algum conflito entre eventos, por isso precisava da vossa ajuda. Por exemplo se existe alguma maneira de eu saber qual foi o tipo de evento que aconteceu em determinada label(se mousePressed ou mouseReleased). Outra coisa que tambem achei estranha, foi que, supostamente o mousePressed é quando pressiono o botao do rato num componente e o mouseReleased quando o liberto sobre outro componente. No entanto, eu faço mouseDown na labelvirarCartao e arrasto o rato para cima de uma das labels das sequencias e nada acontece. Mas quando clico na labelVirarCartao uma vez e depois clico numa das labels, ele ja faz as coisas direito. Estranho.

Desculpem esta duvida tao grande, mas ja ando a mais de um dia a tentar colocar isto a funcionar e ou funciona uma parte ou funciona a outra

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
Entre para seguir isso  

×
×
  • Criar Novo...