java paint方法是什么意思?java中paint()的具体用法是什么
各位老铁们,大家好,今天由我来为大家分享java paint方法是什么意思,以及java中paint()的具体用法是什么的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
java中paint()的具体用法是什么
1、这个方法需要注意的地方不多,也就是重写时,先调用 super.paint(g)方法。paint方法不需要编写代码调用,只需要重写。
2、paint。public void paint(Graphics g)绘制容器。该方法将 paint转发给任意一个此容器子组件的轻量级组件。如果重新实现此方法,那么应该调用 super.paint(g)方法,从而可以正确地呈现轻量级组件。如果通过 g中的当前剪切设置完全剪切某个子组件,则不会将 paint()转发给这个子组件。
3、调用paint的一般是repaint()或当显示器刷新的时候调用的类似repaint()的类。当对于桌面执行了某类操作,改变了桌面上的图象时,jvm收到界面被调整的信息,此时会调用visible是ture的图形组件的repaint()方法对界面重绘。
4、当然,直接重绘或全部重绘是很亏的,一个是用双缓存技术,另一个是只对桌面上显示的部分重绘。双缓存是指在缓存内先模拟重绘过程,只把最后成形的结果传给显示器显示。
java中paint()的具体用法
这个方法需要注意的地方不多,也就是重写时,先调用 super.paint(g)方法
paint方法不需要编写代码调用,只需要重写。
其他看jdk帮助中就行了。
public void paint(Graphics g){
super.paint(g);//调用父类的paint方法或调用下面的方法直接绘制组件
g.drawImage(image, 0, 0, null);
g.setFont(new Font("", Font.BOLD, 13));
g.setColor(Color.WHITE);
}
paint
public void paint(Graphics g)绘制容器。该方法将 paint转发给任意一个此容器子组件的轻量级组件。如果重新实现此方法,那么应该调用 super.paint(g)方法,从而可以正确地呈现轻量级组件。如果通过 g中的当前剪切设置完全剪切某个子组件,则不会将 paint()转发给这个子组件。
覆盖:
类 Component中的 paint
参数:
g-指定的 Graphics窗口
另请参见:
Component.update(Graphics)
JAVA swing编程 画图问题 paint()方法
super.paint()的作用是把当前的区域清空,每次resize的时候就会自动调用paint()方法,paint()方法里先调用了super.paint()清空当前区域,再画一个矩型筐,当然每次只有一个了。另外你的算法也有漏洞,当你想从右上角拉到左下角画矩形的时候是没有反应的。下面这个程序修改了只画一个的错误,改进了右上角拉到左下角的漏洞,还增加了拖动的中间过程。没时间给你写注释,自己看吧。 import java.awt.*; import java.awt.event.*; import java.util.Vector; import javax.swing.*; public class Hello extends JFrame implements MouseListener,MouseMotionListener{ int x一,y一; Vector rectangles=null; public Hello(){ this.setTitle("画图小程序"); this.addMouseListener(this); this.addMouseMotionListener(this); this.setSize(四00,四00); rectangles=new Vector(); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);} public void paint(Graphics g){ super.paint(g); g.setColor(Color.BLUE); for(int i=0;i<rectangles.size();i++){ Rectangle rec=rectangles.get(i); int tmp_x=rec.x; int tmp_y=rec.y; int tmp_w=rec.width; int tmp_h=rec.height; g.drawRect(tmp_x,tmp_y,tmp_w,tmp_h);}} public static void main(String[] args){ new Hello();} public void mouseClicked(MouseEvent e){} public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mousePressed(MouseEvent e){ x一=e.getX();y一=e.getY();} public void mouseReleased(MouseEvent e){ int x二=e.getX(); int y二=e.getY(); int x=0; int y=0; Graphics g=this.getGraphics(); g.setColor(Color.BLUE); int tmp_w=0; int tmp_h=0; if(x一x二){ x=x二; tmp_w=x一-x二;} if(y一y二){ y=y二; tmp_h=y一-y二;} rectangles.add(new Rectangle(x,y,tmp_w,tmp_h)); this.repaint();} public void mouseDragged(MouseEvent e){ int x二=e.getX(); int y二=e.getY(); int x=0; int y=0; Graphics g=this.getGraphics(); g.setColor(Color.BLUE); int tmp_w=0; int tmp_h=0; if(x一x二){ x=x二; tmp_w=x一-x二;} if(y一y二){ y=y二; tmp_h=y一-y二;} paint(g); g.drawRect(x,y,tmp_w,tmp_h);} public void mouseMoved(MouseEvent e){}
JAVA中paint()是自动执行的吗
是的paint()方法只会自动调用一次,而且你用的时候要自己重写这个方法
调用过一次的时候可以在线程里用repaint()再度调用
关于Graphics;楼主的观点大部分是对的,但是有点小问题
首先你并没有调用paint(g)方法,而是系统调用的,或者是你自己repaint()
调用的
如果你要调用paint()方法,你必须传进来一个参数 Graphics
Graphics这个对象的表示的是,你的绘制环境
比如有2个 JFrame jf1,jf2,那么对应2个Graphics g1,g2
(g1=jf1.getGraphics(),g2=jf2.getGraphics())//获取绘制环境
如果jf1是显示的,jf2是隐藏的
那么你自己调用 paint(g2)的时候,不会显示绘制的内容,因为
paint()实在jf2上绘制的,
“包含有paint()方法的class实例化一个对象后调用构造方法后就会自动产生Graphics”
Graphics这个对象不是在你自己写的类中产生的
而是在 JFrame等一些可以作为容器类里已经实例化的
也就是说他已经定好了绘制环境,
所以你写JFrame,什么的需要实现paint()方法的时候
你不需要指定一个Graphics说明你的绘制环境
PS(你也可试试在线程里调用 paint(),好像也可以,因为毕竟也是一个方法
,我曾经在 paint()方法里调用过 repaint(),而不是在线程里调用repaint(),就达到了动画的效果
)
java paint方法是什么意思的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java中paint()的具体用法是什么、java paint方法是什么意思的信息别忘了在本站进行查找哦。