Problema com movimentação de JLabels em um Frame transparente

5 respostas
ElesisLink

Quando coloco o JFrame com background transparente, na hora de arrastar uma JLabel, ele arrasta o form junto.

Se puderem me ajudar…

5 Respostas

J

Poderia ser mais específico?

Está fazendo na mão?

Poderia postar algum código pra eu entender o problema?

ElesisLink

Olha, eu to fazendo um jogo. Se for postar o código, vai ficar mto grande… São 2000 linhas de código, pq tem mto if/else.

O objetivo do jogo é vestir o personagem de acordo com as situações do cotidiano. Vc deve arrastar a roupa até o personagem, e, quando ela entra em contato com ele,

muda o gráfico do personagem, de modo a vestí-lo com a roupa arrastada.

Tenho um código que deixa o JFrame transparente, mas quando isso acontece, o JLabel das roupas, ao ser arrastado, carrega consigo todo o JFrame.

Se vc quiser msm ver o código, eu posto.

J

Além de deixar o JFrame transparente, você também deixa ele Undecorated ?

Posso estar falando besteira, mas pelo que me parece, quando você deixa o JFrame, não apenas transparente, mas completamente invisível, e também sem decoração, mostrando apenas seus elementos, acontece que a janela assume a forma do que estiver visível. Por exemplo, você insere a imagem de uma bola na JLabel e deixa o frame transparente e sem decoração, então a janela assume o formato da imagem, no caso, uma bola.
Sendo assim, você não está apenas arrastando um elemento dentro da sua janela, está arrastando ela completamente.
Não sei se isso ajuda, mas é minha opinião de iniciante em java.

J

Melhor, você poderia postar apenas a parte do código que arrasta as JLabels?

ElesisLink

Esta é a classe responsável pela movimentação das JLabels.

Como eu seto esses objetos em outra camada do frame e seto o frame como opaque ?

class Mover extends MouseInputAdapter{
		
		private int xSel,ySel;
		private int inx,iny;
		
			public void mousePressed(MouseEvent evento){
			
				inx=camisa.getX();
				iny=camisa.getY();
					
			
			}
			
			public void mouseRelease(MouseEvent evento){
				
				camisa.setLocation(inx,iny);
			}
		
			public void mouseDragged(MouseEvent evento){
			
				int xSel,ySel;
				Object oba = evento.getSource();
				
				xSel=((Component)oba).getLocation().x;
				ySel=((Component)oba).getLocation().y;
				((Component)oba).setLocation((evento.getX() + xSel) - (((Component)oba).getWidth()/2) , (evento.getY() + ySel)-(((Component)oba).getHeight()/2));
				xSel = evento.getX();
				ySel = evento.getY();

                        }
			
			public void mouseEntered(MouseEvent evento){}
			
			public void mouseMoved(MouseEvent evento){
			
			int mX,mY;
			 mX = (int) evento.getPoint().getX();
			 mY = (int) evento.getPoint().getY();
			 
			}
			public void mouseClicked(MouseEvent evento) {
				
				if(evento.getSource()==pilha2){
					
					calcao.setVisible(true);
					
				}
				
				
			       
			    }
			public void mouseExited(MouseEvent evento){}
			
		}
	//fim da classe mover
Criado 10 de outubro de 2011
Ultima resposta 21 de out. de 2011
Respostas 5
Participantes 2