黑马程序员技术交流社区

标题: 重写DrawLine [打印本页]

作者: 途遥子若    时间: 2014-2-25 20:27
标题: 重写DrawLine
如何重写Graphics的drawLine(double x1,double y1,double x2,double y2)方法,使其支持double类型坐标

作者: 1453149997    时间: 2014-4-2 13:03
(1)首先,你的概念是错误的,重写是必须保持和父类方法声明一致,你上面的做法是重载;
(2)而且原来的方法所属的对象并不能自己创建对象,是由系统底层负责创建,说明drawLine方法也是系统底层实现的,如果要写重载写出drawLine(double x1,double y1,double x2,double y2),必须继承Graphics或者Graphics2d,但是写drawLine(double x1,double y1,double x2,double y2)必须知道怎么调用系统底层的方法;如果继承系统底层创建的类,但是那个类是运行时创建的无法继承;

所以以我们目前的水平,应该写不出来
作者: y200745    时间: 2014-4-3 00:44
支持double类型是没有意义的,因为组件的绘制区域是有N*M个像素绘制成,精确到double没有意义。
你需要把你的坐标点 转化成像素坐标。你告诉我你的 double x,double y 是什么意思。给你写几句代码,Component c=new JLabel();Graphic g=c.getGraphic();c.setPreferredSize(new Dimension(200,200));// c组件的大小为200*200像素Point start=new Point(0.3,0.2);//Point end=new Point(0.1,0.1);//如果要画出这条线,应该如下g.drawLine(Math.round(0.3*200),Math.round(0.2*200),Math.round(0.1*200),Math.round(0.1*200));




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2