Coordenada do clique do mouse sobre um JPanel

5 respostas
tetri

Preciso pegar as coordenadas x e y atraves do clique do mouse sobre um JPanel… alguém pode me ajudar? é urgente!

O código abaixo não funciona:

jPanel1.addMouseListener ( new MouseListener() { public void mouseClicked(MouseEvent ev) { int x = (int) ev.getPoint().getX(); int y = (int) ev.getPoint().getY(); } } );

Retorna o seguinte erro na linha do
public void mouseClicked(MouseEvent ev) {

is not abstract and does not override abstract method mouseExited(java.awt.event.MouseEvent)

5 Respostas

pcalcado

Por favor, não use palavras como “urgente”, cada um aqui tem suas prioridades e o suporte é dado no tempo livre de cada um. Procure colocar no título algo descritivo e na seção correta. Certamente seu tópico terá respostas :wink:

E

x = ev.getX();
y = ev.getY();

já tentou tirar o getPoint()?

TedLoprao

Na verdade o compilador está querendo te dizer que vc nãop sobrescreveu o método mouseExited, a interface MouseListener define vários métodos para serem sobrescritos e todos devem ser implementados, entretanto você pode usar um MouseAdapter ao invés do MouseListener…

jPanel1.addMouseListener (
     new MouseAdapter() {
         public void mouseClicked(MouseEvent ev) {
             int x = (int) ev.getPoint().getX();
             int y = (int) ev.getPoint().getY();
         }
     }
 );

fallow

Lex-dmm

esse exemplo mostra varias maneiras inclusive a que vc quer, não use o getPoint(x,y). Ele joga as coordenadas num array. Use só o getX() e o getY() eles pega só o valor da coordenada separados como strings.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MouseTracker extends JFrame
implements MouseListener, MouseMotionListener {
	private JLabel statusBar;
	public MouseTracker()
	{
		super( "Demonstrating Mouse Events" );
		statusBar = new JLabel();
		getContentPane().add( statusBar, BorderLayout.SOUTH );
		// application listens to its own mouse events
		addMouseListener( this );
		addMouseMotionListener( this );
		setSize( 275, 100 );
		show();
	}
	
	///////////////////////
	
	// MouseListener event handlers
	public void mouseClicked( MouseEvent e ) {
		statusBar.setText( "Clicked at [" + e.getX() +
				", " + e.getY() + "]" );
	}
	public void mousePressed( MouseEvent e ) {
		statusBar.setText( "Pressed at [" + e.getX() +
				", " + e.getY() + "]" );
	}
	public void mouseReleased( MouseEvent e ) {
		statusBar.setText( "Released at [" + e.getX() +
				", " + e.getY() + "]" );
	}
	public void mouseEntered( MouseEvent e ) {
		statusBar.setText( "Mouse in window" );
	}
	public void mouseExited( MouseEvent e ){
		statusBar.setText( "Mouse outside window" );
	}
	
	
	////////////////////////////
	
	
	
	// MouseMotionListener event handlers
	public void mouseDragged( MouseEvent e ) {
		statusBar.setText( "Dragged at [" + e.getX() +
				", " + e.getY() + "]" );
	}
	public void mouseMoved( MouseEvent e ) {
		statusBar.setText( "Moved at [" + e.getX() +
				", " + e.getY() + "]" );
	}
	public static void main( String args[] ) {
		MouseTracker app = new MouseTracker();
		app.addWindowListener(
				new WindowAdapter() {
					public void windowClosing( WindowEvent e )
					{
						System.exit( 0 );
					}
				}
		);
	}
}
tetri

perfeito pessoal, a solução do TedLoprao solucionou o problema… e quanto aos adicionais, valeo… acho que assim ajudamos quem ainda tinha alguma outra dúvida

Criado 24 de agosto de 2005
Ultima resposta 24 de ago. de 2005
Respostas 5
Participantes 5