我用的画布是jPanel,是不是跟我重载paint方法有关啊,我重载的是frame的paint来重画,是不是应该重载画布的paint啊,可是我重载画布的paint不知道为什么老执行不到
解决方案 »
- java acm的简单格式输入输出(刚接触求大神!!!),题实现连续输入多行并求每行之和
- 求java实现植物大战僵尸的思路,文档,类图,谢谢!
- eclipse调试出现Source not found.错误
- alt 切换 到 菜单栏的问题
- 关于ArraryList的问题
- 编译出错
- 求问一个释放内存的问题!thanks
- 有关JDBC 中 Output PreparedStatement 问题(小弟高分急求答案,在线等。)
- jbuilder中如何到入一个类包?
- 求助JCreator Pro 2.0 Build007
- ||||||java捕获系统热键的消息(如QQ热键)||||||||||||||||||||||||||||
- 这个怎么都想不明白,关于线和的问题
不管你在哪里画图,最终都得通过 Graphics 来实现。
就算在 JPanel 上画图,也是用的 Graphics 来画的啊。你自己想想,重载的 paint 方法,不就有一个 Graphics 的参数吗?至于位置,就看你想画在哪里了。如果你希望在画布大小改变的时候,那是一定要重载 paint 或者其它用于绘制的方法的,比如 paintComponent,当然,得看情况。
这样画的图才是在panel 里, 否则是在frame上的
我的Graphics是canvas.getGraphics()得到的
http://sunfruit.blogchina.com,这里有例子和源代码
比如你想画条线,长度是你窗口的宽度的一半,你当前窗口大小600,400
你应该
g.drawLine(0,0,0+getSize().getWidth()/2,0);
你用
g.drawLine(0,0,300,0);自然会出问题了
图形是shape类写的shape的g是在初始化shape的时候从canvas中获得的(g = canvas.getGraphis())
在需要重画的时候,好像只能调用frame的paint()才有效,paint方法如下:
{super.paint(g);
canvas1.drawAllShapes();//自己写的方法
}
这时候在改变canvas的大小的时候,图形有时候就会出到画布的外面去了,而且位置和我记在内存中的不一样了