जेपीनेल के लिए पॉइंट सापेक्ष के रूप में कर्सर समन्वयक प्राप्त करें

मैं जेपीनल पर कर्सर के निर्देशांक कैसे प्राप्त कर सकता हूं? मैंने इसका उपयोग करने की कोशिश की है:

MouseInfo.getPointerInfo().getLocation();

लेकिन यह स्क्रीन पर स्थान देता है। मैंने mouseMoved (MouseEvent m) विधि का उपयोग करने का प्रयास किया और फिर m.getX() और m.getY() से समन्वय प्राप्त करें, लेकिन उस विधि को नहीं बुलाया जा रहा है। (मैं MouseListener का उपयोग कर रहा हूं)।

यहां मेरा पैनल वर्ग है:

public class Panel extends JPanel implements Runnable, KeyListener, MouseListener {

// serial
private static final long serialVersionUID = -2066956445832373537L;

// dimensions
public static final int WIDTH = 800;
public static final int HEIGHT = 600;

// game loop
private Thread thread;
private boolean running;
private final int FPS = 30;
private final int TARGET_TIME = 1000/FPS;

// drawing
private BufferedImage image;
private Graphics2D g;

// status handler
private StatusHandler statusHandler;

// constructor
public Panel() {
    setPreferredSize(new Dimension(WIDTH, HEIGHT));
    setFocusable(true);
    requestFocus();
}

public void addNotify() {
    super.addNotify();
    if(thread == null) {
        addKeyListener(this);
        addMouseListener(this);
        thread = new Thread(this);
        thread.start();
    }
}

public void run() {

    init();

    long start;
    long elapsed;
    long wait;

   //game loop
    while(running) {

        start = System.nanoTime();

        update();
        render();
        renderToScreen();

        elapsed = System.nanoTime() - start;

        wait = TARGET_TIME - elapsed/1000000;
        if(wait < 0) wait = TARGET_TIME;

        try {
            Thread.sleep(wait);
        }
        catch(Exception e) {
            e.printStackTrace();
        }

    }

}

private void init() {
    running = true;
    image = new BufferedImage(WIDTH, HEIGHT, 1);
    g = (Graphics2D) image.getGraphics();
    statusHandler = new StatusHandler();
}

private void update() {
    statusHandler.update();
}

private void render() {
    statusHandler.render(g);
}

private void renderToScreen() {
    Graphics g2 = getGraphics();
    g2.drawImage(image, 0, 0, WIDTH, HEIGHT, null);
}

public void keyTyped(KeyEvent key) {}
public void keyPressed(KeyEvent key) {
    KeyInput.setKey(key.getKeyCode(), true);
}
public void keyReleased(KeyEvent key) {
    KeyInput.setKey(key.getKeyCode(), false);
}

public void mouseClicked(MouseEvent m) {}
public void mouseReleased(MouseEvent m) {
    MouseInput.setButton(m.getButton(), false);
    MouseInput.setMouseEvent(m);
}
public void mouseEntered(MouseEvent m) {}
public void mouseExited(MouseEvent m) {}
public void mousePressed(MouseEvent m) {
    MouseInput.setButton(m.getButton(), true);
    MouseInput.setMouseEvent(m);
}

}

0
हाँ, मैंने किया। मैंने प्रश्न में पैनल कोड जोड़ा।
जोड़ा लेखक sparklyllama, स्रोत
क्या आपने माउसलिस्टर को पैनल में जोड़ा था? जब आपने कोशिश की तो समस्या का प्रदर्शन करते हुए अपना SSCCE पोस्ट करें।
जोड़ा लेखक camickr, स्रोत
यह एक एसएससीसीई नहीं है। यदि आप नहीं जानते कि एसएससीसीई क्या है तो खोज या वेब पर खोजें।
जोड़ा लेखक camickr, स्रोत

1 उत्तर

mouseMoved ईवेंट को MouseMotionListener द्वारा प्रबंधित किया जाता है।

0
जोड़ा
हाँ, मैंने बस इसे समझ लिया। वैसे भी धन्यवाद!
जोड़ा लेखक sparklyllama, स्रोत