如何在java中组合MouseMotionListener和JPanel
我搜索了整个互联网,但无法找到为什么圆圈在JFrame的中间出现扭曲(对不起,没有图片,因为我需要10个声誉才能发布图片)。 我检查了我的代码,但没有发现错误。我是java GUI编程的新手。 这是我目前的代码:如何在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
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)
?我实际上希望鼠标后面有一系列的圆圈。