不兼容的Java类型

不兼容的Java类型,java,swing,Java,Swing,这是我的第一个问题。 这个问题一直困扰着我。所以,基本上每次我编译我的程序时,我都会得到一个错误,如下所示: **Paint.java:40: error: incompatible types: java.awt.Point cannot be converted to Point pt = me.getPoint(); ^ Paint.java:45: error:

这是我的第一个问题。 这个问题一直困扰着我。所以,基本上每次我编译我的程序时,我都会得到一个错误,如下所示:

**Paint.java:40: error: incompatible types: java.awt.Point cannot be converted to
Point
                        pt = me.getPoint();
                                        ^
Paint.java:45: error: incompatible types: java.awt.Point cannot be converted to
Point
                        pt = me.getPoint();
                                        ^
2 errors**
这是我的密码:

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

public class Paint extends JFrame implements MouseMotionListener{


    /*public class Point {
        public int x, y; // Possible

        public int getX(){ return x;}
        public int getY(){ return y;}

    }*/

    private Point pt = new Point();
    private Graphics g;

    public Paint(){
        super("Painter");
        add(new Label("Drag mouse to draw"),BorderLayout.SOUTH);
        JPanel jp = new JPanel();
        add(jp, BorderLayout.CENTER);
        setSize(400,400);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    public void paint(Graphics g){
        g.fillOval((int) pt.getX(), (int)pt.getY(), 5,5);
    }


    @Override
        public void mouseDragged(MouseEvent me){
            Graphics2D g = (Graphics2D)getGraphics();
            g.setStroke(new BasicStroke(4));
            g.setColor(Color.BLUE);
            g.drawLine(pt.x,pt.y, me.getX(), me.getY());
            pt = me.getPoint();
        }

    @Override
        public void mouseMoved(MouseEvent me){
            pt = me.getPoint();
        }

    public static void main(String[] args){
        new Paint();
    }

}
这个程序最终应该是一个简单的绘画程序。
提前感谢您的帮助。

尝试完全删除您自己的point类,然后保存,然后重新编译并运行

pt = me.getPoint();

您试图将java.awt.Point放入变量pt中,该变量具有不同的类型Point。为什么要创建自己的类点?

问题中的代码编译时没有任何错误。只有在取消注释
Point
类之后,您才尝试将从
MouseEvent
reference
me
返回的java.awt.Point转换为自定义的
Paint.Point
类型,此错误才是可重现的

这里有几个选项供您选择:

  • 删除自定义的
    Point
    内部类并继续使用
    java.awt.Point
  • 如果确实需要自定义
    Point
    类,请编写一个助手方法,将
    java.awt.Point
    转换为
    Paint.Point
    ,如下所示:
  • 公共点转换点(java.awt.Point p){
    点myP=新点();
    myP.x=p.x;
    myP.y=p.y;
    返回多年电价;
    }
    

    在注释掉自己的
    类后是否进行了清理?如果有疑问,请删除所有导入并逐个重新创建,否则可能会导致加载无用的导入。此外,虽然本例中的问题是过时的
    点.class
    文件,但通配符导入因此类问题而臭名昭著。使用IDE,它将为您单独管理它们。