माउस स्थिति प्राप्त करें


109

मैं जावा में एक प्राकृतिक माउस आंदोलन को अनुकरण करना चाहता हूं (यहां से पिक्सेल द्वारा पिक्सेल पर जा रहा है)। ऐसा करने के लिए मुझे शुरुआती निर्देशांक जानने की जरूरत है।

मैंने मेथड ईवेंट.गेटएक्स () और ईवेंटगेटी () पाया है, लेकिन मुझे एक ईवेंट की आवश्यकता है ...

मैं कुछ भी किए बिना पदों को कैसे जान सकता हूं (या कुछ दिखाई नहीं दे रहा है)?

धन्यवाद

जवाबों:


205

MouseInfo.getPointerInfo ()। GetLocation () मददगार हो सकता है। यह वर्तमान माउस पोजीशन के अनुरूप पॉइंट ऑब्जेक्ट देता है ।


46
getPointerInfo().getLocation()स्क्रीन के सापेक्ष स्थिति लौटाता है। यदि आप अपने घटक के सापेक्ष स्थान चाहते हैं (जैसे माउसलिस्ट्रेन द्वारा दिया गया) तो आप इससे घटा सकते हैं yourComponent.getLocationOnScreen()
थॉमस अहले

2
+1 Container.getMousePosition()कुछ बार वापस आ सकता है nullयदि माउस बहुत तेजी से आगे बढ़ रहा है, इस मुद्दे का उपयोग करने से बचा जाता है।
एमिली एल

11
@ThomasAhle ने जो कहा, इसके अलावा, आप पहले से लागू की गई आश्वस्त पद्धति का उपयोग करके, इसे स्वयं लागू करने से बच सकते हैं:SwingUtilities.convertPointFromScreen(MouseInfo.getPointerInfo().getLocation(), component)
आंद्रेई वजना II

1
नोट MouseInfo.getPointerInfo()जब कोई माउस या कुछ मल्टीमॉन सेटअप में नहीं है तो अशक्त वापस आ सकता है।
नैट

2
ध्यान दें कि SwingUtilities.convertPointFromScreen(..)पहले तर्क को जगह में परिवर्तित करता है और कुछ भी वापस नहीं करता है, इसलिए इसे @AndreiVajnaII टिप्पणी के सापेक्ष थोड़ा अलग लिखा जाना चाहिए ताकि हम Pointऑब्जेक्ट को पकड़ सकें ।
इवगेनी सर्गेव

42
PointerInfo a = MouseInfo.getPointerInfo();
Point b = a.getLocation();
int x = (int) b.getX();
int y = (int) b.getY();
System.out.print(y + "jjjjjjjjj");
System.out.print(x);
Robot r = new Robot();
r.mouseMove(x, y - 50);

18
कृपया अगली बार कुछ टिप्पणियां जोड़ें।
CSchulz

10

SWT में आपको माउस स्थान पर प्राप्त करने के लिए श्रोता की आवश्यकता नहीं है। प्रदर्शन ऑब्जेक्ट में विधि है getCursorLocation()

वेनिला SWT / JFace में, कॉल करें Display.getCurrent().getCursorLocation()

एक आरसीपी आवेदन में, कॉल करें PlatformUI.getWorkbench().getDisplay().getCursorLocation()

SWT अनुप्रयोगों के लिए, यह उपयोग करने के लिए बेहतर है getCursorLocation()से अधिक MouseInfo.getPointerInfo(), के रूप में बाद के AWT टूलकिट कि SWT को बदलने के लिए डिजाइन किया गया था में कार्यान्वित किया जाता है कि दूसरों का उल्लेख किया है।


6
import java.awt.MouseInfo;
import java.awt.GridLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;

import javax.swing.*;

public class MyClass {
  public static void main(String[] args) throws InterruptedException{
    while(true){
      //Thread.sleep(100);
      System.out.println("(" + MouseInfo.getPointerInfo().getLocation().x + 
              ", " + 
              MouseInfo.getPointerInfo().getLocation().y + ")");
    }
  }
}

6
import java.awt.MouseInfo;
import java.util.concurrent.TimeUnit;

public class Cords {

    public static void main(String[] args) throws InterruptedException {

        //get cords of mouse code, outputs to console every 1/2 second
        //make sure to import and include the "throws in the main method"

        while(true == true)
        {
        TimeUnit.SECONDS.sleep(1/2);
        double mouseX = MouseInfo.getPointerInfo().getLocation().getX();
        double mouseY = MouseInfo.getPointerInfo().getLocation().getY();
        System.out.println("X:" + mouseX);
        System.out.println("Y:" + mouseY);
        //make sure to import 
        }

    }

}

4

Java.awt.Robot वर्ग को देखने का प्रयास करें। यह आपको माउस को प्रोग्राम में ले जाने की अनुमति देता है।



1

मैं रोबोट का उपयोग करके माउस निर्देशांक प्राप्त करने के लिए कुछ इस तरह कर रहा हूं, मैं इन निर्देशांक का उपयोग उन कुछ खेलों में कर रहा हूं जिन्हें मैं विकसित कर रहा हूं:

public class ForMouseOnly {
    public static void main(String[] args) throws InterruptedException {
        int x = MouseInfo.getPointerInfo().getLocation().x;
        int y = MouseInfo.getPointerInfo().getLocation().y;
        while (true) {

            if (x != MouseInfo.getPointerInfo().getLocation().x || y != MouseInfo.getPointerInfo().getLocation().y) {
                System.out.println("(" + MouseInfo.getPointerInfo().getLocation().x + ", "
                        + MouseInfo.getPointerInfo().getLocation().y + ")");
                x = MouseInfo.getPointerInfo().getLocation().x;
                y = MouseInfo.getPointerInfo().getLocation().y;
            }
        }
    }
}

0

यदि आप SWT का उपयोग कर रहे हैं, तो आप यहां बताए अनुसार एक MouseMoveListener को जोड़ना चाह सकते हैं ।


4
लेकिन श्रोता को केवल तभी निष्पादित किया जाता है जब मैं अपने माउस के साथ कुछ करता हूँ (स्थानांतरित, क्लिक)? शुरू करने से पहले मुझे जो पहली चीज चाहिए वह है शुरुआती स्थिति जानना
मार्टिन ट्रिगाक्स

0

मेरे परिदृश्य में, मुझे माउस के साथ किए गए GUI ऑपरेशन के आधार पर माउस स्थिति में एक डायलॉग बॉक्स खोलना था। निम्नलिखित कोड ने मेरे लिए काम किया:

    public Object open() {
    //create the contents of the dialog
    createContents();
    //setting the shell location based on the curent position
    //of the mouse
    PointerInfo a = MouseInfo.getPointerInfo();
    Point pt = a.getLocation();
    shellEO.setLocation (pt.x, pt.y);

    //once the contents are created and location is set-
    //open the dialog
    shellEO.open();
    shellEO.layout();
    Display display = getParent().getDisplay();
    while (!shellEO.isDisposed()) {
        if (!display.readAndDispatch()) {
            display.sleep();
        }
    }
    return result;
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.