2012-10-12 34 views
7

मैं पैनल के शीर्ष बाईं ओर पैनल = x/y 0,0 के रूप में माउस की स्थिति प्राप्त करने का प्रयास कर रहा हूं।पैनल के सापेक्ष माउस स्थिति ढूंढना

मेरे पास जो कुछ है, वह पूरे स्क्रीन पर स्थिति देता है, इसलिए पैनल पर (जहां फ्रेम में है) स्क्रीन पर है, निर्देशांक अलग हैं। मुझे लगता है कि आप इसके लिए खाते में एक्स/वाई समन्वय में जोड़ सकते हैं, लेकिन यह एक गन्दा समाधान की तरह लगता है। क्या कोई मदद कर सकता है?

यहां माउस लिस्टर का उपयोग कर रहा है, जिसे पैनल में जोड़ा गया है।

private class MouseListener extends MouseAdapter 
{ 
    public void mouseClicked(MouseEvent e) 
    { 
     // Finds the location of the mouse 
     PointerInfo a = MouseInfo.getPointerInfo(); 
     Point b = a.getLocation(); 

     // Gets the x -> and y co-ordinates 
     int x = (int) b.getX(); 
     int y = (int) b.getY(); 
     System.out.println("Mouse x: " + x); 
     System.out.println("Mouse y: " + y); 

     // Determines which tile the click occured on 
     int xTile = x/tileSize; 
     int yTile = y/tileSize; 

     System.out.println("X Tile: " + xTile); 
     System.out.println("Y Tile: " + yTile); 

    } 
} 

उत्तर

7

MouseEvent.getPoint() देखें।

स्रोत घटक के सापेक्ष की एक्स, वाई स्थिति देता है।

+1

आप, महोदय, एक सज्जन और विद्वान हैं! – DMCH

3

आप MouseEvent.getX() और MouseEvent.getY() का उपयोग क्रमश: एक्स & वाई के रिश्तेदार समन्वय प्राप्त करने के लिए कर सकते हैं।

int relativeX = e.getX(); 
int relativeY = e.getY(); 
... 
+0

भी काम करता है। धन्यवाद! – DMCH