মাউস পজিশন পান


109

আমি জাভাতে প্রাকৃতিক মাউস চলাচলের অনুকরণ করতে চাই (এখানে থেকে পিক্সেলের মাধ্যমে পিক্সেল পর্যন্ত যাচ্ছি)। এটি করার জন্য আমার সূচনা স্থানাঙ্কগুলি জানতে হবে।

আমি ইভেন্ট ইভেন্ট।

আমি কিছু না করে অবস্থানগুলি কীভাবে জানতে পারি (বা কিছু দৃশ্যমান নয়)?

ধন্যবাদ

উত্তর:


205

মাউসআইএনফো.সেটপয়েন্টারআইএনফো ()। GetLocation () সহায়ক হতে পারে। এটি বর্তমান মাউস অবস্থানের সাথে সামঞ্জস্য করে একটি পয়েন্ট অবজেক্ট প্রদান করে।


46
getPointerInfo().getLocation()স্ক্রিনের তুলনায় অবস্থান ফিরিয়ে দেয়। আপনি যদি নিজের উপাদানটির তুলনায় অবস্থানটি চান (যেমন মাউসলিস্টেনারদের দেওয়া) আপনি yourComponent.getLocationOnScreen()এটি থেকে বিয়োগ করতে পারেন ।
টমাস আহলে

2
মাউস খুব দ্রুত গতিতে চলতে থাকলে +1 Container.getMousePosition()কিছু সময় ফিরে আসতে nullপারে, এটি ব্যবহার করে সমস্যাটি এড়ানো হয়।
এমিলি এল।

11
@ থমাস অহলে যা বলেছিলেন তা ছাড়াও, আপনি ইতিমধ্যে বাস্তবায়িত SwingUtilities.convertPointFromScreen(MouseInfo.getPointerInfo().getLocation(), component)
প্রত্যয়

1
নোট MouseInfo.getPointerInfo()নাল আসতে পারেন যখন কোনো মাউস বা কিছু multimon স্থাপনার মধ্যে আছে।
NateS

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
পরবর্তী সময় কিছু মন্তব্য যুক্ত করুন।
সিএসচুল্জ

10

এসডাব্লুটি-তে আপনার মাউসের অবস্থানটি পেতে শ্রোতার দরকার নেই। প্রদর্শন বস্তুর পদ্ধতি রয়েছে thegetCursorLocation()

ভ্যানিলা এসডাব্লুটি / জেফিসিতে কল করুন Display.getCurrent().getCursorLocation()

কোনও আরসিপি আবেদনে কল করুন PlatformUI.getWorkbench().getDisplay().getCursorLocation()

এসডব্লিউটি অ্যাপ্লিকেশনগুলির জন্য, অন্যরা উল্লিখিত যেগুলি ব্যবহার getCursorLocation()করেছেন সেগুলি ব্যবহার করা ভাল MouseInfo.getPointerInfo(),


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 ব্যবহার করছেন তবে আপনি এখানে বর্ণিত হিসাবে একটি মাউসমোভলিস্টনার যুক্ত করার দিকে নজর দিতে পারেন ।


4
তবে শ্রোতা কেবল তখনই কার্যকর করা হয় যদি আমি আমার মাউস দিয়ে কিছু (সরানো, ক্লিক) করি, তাই না? এটি সরানোর আগে আমার প্রথম যে জিনিসটি প্রয়োজন তা হল শুরু অবস্থানটি জানা
মার্টিন ট্রাইগক্স

0

আমার দৃশ্যে, মাউসের সাথে করা জিইউআই অপারেশনের উপর ভিত্তি করে আমার মাউস পজিশনে একটি ডায়ালগ বক্স খোলার কথা ছিল। নিম্নলিখিত কোডটি আমার পক্ষে কাজ করেছে:

    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;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.