Solved

Java get Coordinate of current mouse position

Posted on 2009-03-29
2
1,290 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

Windows Server 2016: All you need to know

Learn about Hyper-V features that increase functionality and usability of Microsoft Windows Server 2016. Also, throughout this eBook, you’ll find some basic PowerShell examples that will help you leverage the scripts in your environments!

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
split string containing \r\n in Java 46 44
how to see all occupied ports on windows 10 laptop 15 65
hibernate jars 4 32
Problem to Alipay 10 24
How to install Selenium IDE and loops for quick automated testing. Get Selenium IDE from http://seleniumhq.org Go to that link and select download selenium in the right hand columnThat will then direct you to their download page.From that page s…
Introduction This article is the first of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article explains our test automation goals. Then rationale is given for the tools we use to a…
Viewers will learn one way to get user input in Java. Introduce the Scanner object: Declare the variable that stores the user input: An example prompting the user for input: Methods you need to invoke in order to properly get  user input:
THe viewer will learn how to use NetBeans IDE 8.0 for Windows to perform CRUD operations on a MySql database.

810 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