A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 途遥子若 中级黑马   /  2014-2-25 20:27  /  1796 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如何重写Graphics的drawLine(double x1,double y1,double x2,double y2)方法,使其支持double类型坐标

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

2 个回复

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

所以以我们目前的水平,应该写不出来

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
支持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));
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马