Swing MouseMotionListener liefert falsche Werte ?

Arif

Aktives Mitglied
Hallo, ich möchte ein kleines Spiel programmieren. Mein Problem ist, dass die Methoden getX() und getY() irgendwie falsche Werte liefern. Ich habe ein kleines GUI-Programm geschrieben, damit ihr es sehen könnt, und den Code könnt ihr auch sehen.

Code:
package logik;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
* @author Arif Ertugrul
* @since 16.09.2016
*/

public class Test extends JPanel implements MouseMotionListener {
   
    JFrame fr = new JFrame();
    int x, y;
   
    public static void main(String[] args) {
        Test t = new Test();
        while (true) t.fr.repaint();
    }
   
    //Konstruktor
    public Test() {
        fr.setSize(500, 500);
        fr.setDefaultCloseOperation(3);
        fr.setLocationRelativeTo(null);
        fr.addMouseMotionListener(this);
        fr.add(this);
        fr.setVisible(true);
    }
   
    public void paintComponent(Graphics g) {
       
        g.setColor(Color.BLACK);
        g.drawLine(0, 0, x, y);
    }

    @Override
    public void mouseDragged(MouseEvent e) {

       
    }

    @Override
    public void mouseMoved(MouseEvent e) {
        x = e.getX();
        y = e.getY();
    }
}
 

Anhänge

Du hast den Listener dem JFrame hinzugefügt, so dass sich x und y auf dessen Koordinatensystem beziehen. Du zeichnest dann aber im JPanel. Da ist dessen Koordinatenssystem maßgeblich.
 

Zurück
Oben