Solved

Java get Coordinate of current mouse position

Posted on 2009-03-29
2
1,288 Views
Last Modified: 2013-11-23
I have a double array [10][10] or JButtons.  I added the 100 buttons to a JPanel.  I wanted to know if there is a way to get the coordinate position  of the button where the mouse cursor is.  i.e. if the mouse is over the first button that would return 0,0.

Thanks.
0
Comment
Question by:ubuntuguy
  • 2
2 Comments
 
LVL 25

Accepted Solution

by:
InteractiveMind earned 500 total points
ID: 24013630
You could add a MouseMotionListener to your frame, which will tell you the new position of the cursor (x,y) every time it moves. But to work out which button it's on would require you knowing the dimensions of the buttons and their insets.

I expect a better method would be to add a MouseListener to each individual button.
0
 
LVL 25

Expert Comment

by:InteractiveMind
ID: 24013690
Here's an example.
import javax.swing.*;

import java.awt.*;

import java.awt.event.*;
 

public class Example extends JFrame implements MouseListener

{

   JButton [] buttons=new JButton[100];

   

   public Example()

   {

      super("Example buttons");

      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      

      setLayout(new GridLayout(10,10));

      

      for(int i=0; i<buttons.length; i++)

      {

         buttons[i]=new JButton(""+i);

         buttons[i].setName(""+i); // this allows us to identify it later

         buttons[i].addMouseListener(this);

         add(buttons[i]);

      }

      

      pack();

      setLocationRelativeTo(null);

      setVisible(true);

   }

   

   public static void main(String[]a)

   {

      new Example();

   }

   

   

   public void mouseEntered(MouseEvent evt)

   {

      JButton buttonPressed=(JButton)evt.getSource();

      

      int xplusy=Integer.parseInt(buttonPressed.getName());

      int x=xplusy % 10;

      int y=(xplusy-x)/10;

      

      setTitle("Currently on button ("+x+", "+y+")");

   }

   

   public void mouseExited(MouseEvent evt)

   {

      setTitle("Example buttons");//back to normal

   }

   

   

   public void mousePressed(MouseEvent evt){}

   public void mouseReleased(MouseEvent evt){}

   public void mouseClicked(MouseEvent evt){}

}

Open in new window

0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Jaspersoft Studio is a plugin for Eclipse that lets you create reports from a datasource.  In this article, we'll go over creating a report from a default template and setting up a datasource that connects to your database.
Introduction This article is the last of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers our test design approach and then goes through a simple test case example, how …
Viewers learn how to read error messages and identify possible mistakes that could cause hours of frustration. Coding is as much about debugging your code as it is about writing it. Define Error Message: Line Numbers: Type of Error: Break Down…
The viewer will learn how to implement Singleton Design Pattern in Java.

863 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

26 Experts available now in Live!

Get 1:1 Help Now