| 发表于:2007-06-08 14:43:10 楼主 |
这学期的图形学作业,用dda和bresenham画线,我在jframe上放置了个jpanel,然后自己写了个linepanel的类,继承自jpanel,在linepanel的实例上画线。在用于清除线的jbotton的mouseclicked事件里不管我写linepanel.repaint();还是jpanel.repaint();都没办法正确的让linepanel里的东西清楚,第一次会让它的底色变白,第二次开始它的左上角还会出现我的几个按钮和label。。。搞不懂为什么了。。望大侠告知! public class linepanel extends jpanel{ /** creates a new instance of linepanel */ //public linepanel() { //} public void paint(graphics g){ int i; int width=this.getwidth(); int height=this.getheight(); g.drawline(10,height/2-1,width-10,height/2-1); g.drawline(width/2+1,10,width/2+1,height-10); for(i=width/2; i> 0; i-=20){ g.drawstring( ". ",i,height/2-1); } for(i=width/2; i <width; i+=20){ g.drawstring( ". ",i,height/2-1); } for(i=height/2; i> 0; i-=20){ g.drawstring( ". ",width/2+1,i); } for(i=height/2; i <height; i+=20){ g.drawstring( ". ",width/2+1,i); } g.drawstring( "> ",width-15,height/2+4); g.drawstring( "^ ",width/2-1,18); } public void writepixel(int x,int y){ graphics g=this.getgraphics(); g.translate(this.getwidth()/2,this.getheight()/2); g.drawstring( ". ",x,y); } public static void main(string args[]) { java.awt.eventqueue.invokelater(new runnable() { public void run() { new linepanel().setvisible(true); } }); } } |
|
|
|
|