如何在java中组合MouseMotionListener和JPanel

如何在java中组合MouseMotionListener和JPanel,java,awt,mousemotionlistener,Java,Awt,Mousemotionlistener,我搜索了整个互联网,但无法找到为什么圆圈在JFrame的中间出现扭曲(对不起,没有图片,因为我需要10个声誉才能发布图片)。 我检查了我的代码,但没有发现错误。我是java GUI编程的新手。 这是我目前的代码: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class test1 extends JPanel implements MouseMotionListener { private

我搜索了整个互联网,但无法找到为什么圆圈在JFrame的中间出现扭曲(对不起,没有图片,因为我需要10个声誉才能发布图片)。 我检查了我的代码,但没有发现错误。我是java GUI编程的新手。 这是我目前的代码:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class test1 extends JPanel implements MouseMotionListener
{

private static final long serialVersionUID = -2068330714634802982L;
public int Mousex,Mousey;
public void init()
{
    addMouseMotionListener(this);
}
public void mouseMoved(MouseEvent e)
{
     Mousex=e.getX();
     Mousey=e.getY();
    repaint();
}
public void mouseDragged(MouseEvent e){}


 public void paintComponent(Graphics g)
{
    Graphics2D g2=(Graphics2D)g;
    g2.setColor(Color.GREEN);
    g2.fillOval(Mousex,Mousey,50,50);

}


public static void main(String[] args)
{   
    test1 t=new test1();
    JFrame frame=new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(1305,650);
    frame.setLocationRelativeTo(null);
    frame.getContentPane().add(t);
    frame.setResizable(true);
    frame.setVisible(true);
}
}

您从未在面板上调用
init()
,因此不会将
MouseMotionListener
添加到面板中。尝试添加

t.init();
创建面板对象后。或者,向类中添加一个构造函数,该构造函数将添加
MouseMotionListener
,以便在创建类的对象时正确添加该构造函数:

public test1 () {
    addMouseMotionListener(this);
}
你需要打电话

t.init();

注册
MouseMotionListener
。也
super.paintComponent(g)paintComponent
方法中调用中的code>,以重新绘制父容器,否则最后一个矩形将不清晰可见。

我无法在鼠标当前所在的位置绘制矩形。您应该编辑问题以包含此信息。谢谢,但是,当我将鼠标移到JFrame的中间之外时,圆圈似乎扭曲了。请告诉我原因以及如何解决。提前谢谢!!您是否如答案所示添加了
super.paintComponent(g)
?我实际上希望鼠标后面有一系列的圆圈。