Java mouseListener 的 mousemove 不工作

标签 java swing mouselistener

我正在尝试制作一个绘图程序,该程序应该显示用户当前所在的点,我尝试使用 mousemove 来实现此功能(现在使用控制台查看结果)但它不起作用。

public class drawArea extends JPanel implements MouseListener {
Image img;
int w=580;
int h=580;
String equation = "";
int clicks = 0;

public drawArea(){
    init();
    this.addMouseListener(this);
}

private void init(){
    setPreferredSize( new Dimension( w, h ) );
    setVisible(true);
    img = new ImageIcon("assets/Graph.png").getImage();
}

private void initializeGrid(Graphics g) {

    Graphics2D g2d = (Graphics2D) g;
    g2d.drawImage(img, 0, 0, this);

}

private void drawFunction(Graphics g, String function) {
    Graphics2D g2d = (Graphics2D) g;
    g2d.setColor(Color.blue);

    double p=0.01; //plotting precision

    for(double x=-5;x<5;x+=p){
        int drawingX1=gx((x));
        int drawingY1=gy(f(x));
        int drawingX2=gx(x+p);
        int drawingY2=gy(f(x+p));
        g2d.drawLine(drawingX1, drawingY1, drawingX2, drawingY2);

    }

}

private double f(double x){
    return x*x;
}

private int gx(double x){
    return (int) ((x+5)*(w/10));
}

private int gy(double y){
    return (int) (h-(y+5)*(h/10));
}

public void setEquation(String equ){
    equation=equ;
}

public void paintComponent(Graphics g) {

    super.paintComponent(g);
    initializeGrid(g);
    drawFunction(g,"Function");
}

public void mouseClicked(MouseEvent e) {
    if(clicks<3){
        MainUI.points[clicks][0] = e.getX();
        MainUI.points[clicks][1] = e.getY();
        System.out.println(e.getX()+","+e.getY());
        System.out.println(MainUI.points[clicks]   [0]+","+MainUI.points[clicks][1]);
        clicks++;
    }
}

public void mouseEntered(MouseEvent e) {
    //not needed
}

public void mouseExited(MouseEvent arg0) {
    //not needed
}

public void mousePressed(MouseEvent arg0) {
    //not needed        
}

public void mouseReleased(MouseEvent arg0) {
    //not needed    
}

public void mouseMoved(MouseEvent e) {
    System.out.println(e.getX()+","+e.getY());      
}
}

提前致谢

最佳答案

MouseListener 没有 mouseMoved 方法。

您必须添加您还将实现鼠标 Motion 监听器接口(interface)的声明:

public class drawArea extends JPanel 
    implements MouseListener, MouseMotionListener 

此外,您必须在构造函数中添加此鼠标motion 监听器

this.addMouseMotionListener(this);

关于Java mouseListener 的 mousemove 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23295684/

相关文章:

java - JScrollPane 不可见

java - 打开 jar 文件时,更改 JAVA 中的外观和感觉不起作用

java - 通过单击特定图像获取有关特定对象的信息

java - 在 Java 中从键盘读取 double

Java:如何使用父类(super class)设计集合

java - Hadoop伪分布式模式下各种守护进程的IP地址

java - 当 GUI 运行时,如何更新 JTextField?

java - 将 PEM 私钥文件转换为 JAVA 私钥对象

java - 如何在 JPanel 上用 Java 绘制 "Class"

java - 如果我有一个使用 mouselistener 的标签数组列表,那么单击标签时如何获取索引?