Estou fazendo um programinha básico e necessito saber como setar as coordenadas do meu jPanel.
Por exemplo:
Tenho um jFrame e nesse adicionei um jPanel.
Quando faço um evento de mouseListener, pego a posição do eixo x e do eixo y de acordo com a posição do mouse.
Mas percebo que a posição do mouse é em relação à resolução da minha tela, ex:
800 X 600
Gostaria de pegar o posicionamento do mouse com relação do meu jPanel, por exemplo, se o jpanel tem um tamanho de 100 X 100, quero definir pontos como se fosse um plano cartesiano mesmo, onde o ‘0’ fosse no centro, a altura do eixo y de 100 e do eixo x de 100.
Entenderam?
Henrique, me desculpe, porque não estou conseguindo me expressar direito.
Então, para facilitar, peguei uma imagem na internet. O que quero implementar nada mais é que um plano cartesiano, como a figura abaixo, entende?
Quero que a partir do método MouseListener eu possa encontrar exatamente um ponto, por exemplo o ponto A como da figura, que possui os pontos (x = -2) e (y = 3), formando a coordenada (-2, 3). E quando eu passasse o mouse pelo ponto B ele me trouxesse (4, -3), e assim por diante.
Só quero determinar um limite para esse plano cartesiano, entre o eixo das ordenadas e das abcissas.
A questão que falei sobre a resolução da tela foi uma forma que encontrei de exemplificar. Pois, quando se tem um evento de mouse sobre um jPanel por exemplo, conseguimos pegar as coordenadas corretas, com relação a tela, de acordo com o pixel clicado. (Mas isso foi só um exemplo).
Será que ainda assim pode me ajudar?
Desde já muito obrigado!
Sempre em relação ao sistema de coordenadas do painel, basta subtrair o vetor de coordenada do ponto onde o click ocorreu do vetor de coordenadas do centro.
Digamos que seu centro tenha sido desenhado em [color=red]400,300[/color]. Um clique em [color=blue]600,250[/color] teria as coordenadas:
[color=blue]600[/color]-[color=red]400[/color], [color=blue]250[/color]-[color=red]300[/color] = (200, -50) no novo sistema.
Essa foi a forma que encontrei para realizar as operações. Sendo assim, o centro do JPANEL ficou com valor 0,0 e as extremidades com valores divididos:
EX:
jPanel (600,600)
Centro: 0,0
Extremos
X : 300
-X : -300
Y : 300
-Y : -300
Godoy, muito obrigado pela ajuda!
Consegui, e vou dar o tópico como encerrado.
private double centroX;
private double centroY;
private double valorX;
private double valorY;
public void centroPanel() {
int w = jPanelTeste.getWidth();
int h = jPanelTeste.getHeight();
centroX = w / 2;
centroY = h / 2;
System.out.println(" Tamanho Painel X : " + w);
System.out.println(" Tamanho Painel Y : " + h);
System.out.println(" Centro Painel X : " + w / 2);
System.out.println(" Centro Painel Y : " + h / 2);
}
/**
* Funcao para calcular os pontos do mouse de acordo com a coordenada
* do clique
* @param x
* @param y
*/
public void calculaPontoMouse(int x, int y) {
valorX = x - centroX;
//O valor do Y passado é negativo para que o exito Y se inverta, como se fosse
//um plano cartesiano
valorY = -y + centroY;
}