java中paint()的具体用法是什么?

Python012

java中paint()的具体用法是什么?,第1张

这个方法需要注意的地方不多,也就是重写时,先调用 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)

Applet类中的四种基本方法用来控制其运行状态:init()、start()、stop()、destroy()在start()方法里,会调用paint方法。这是applet的运行机制。\x0d\x0a init()方法\x0d\x0a 这个方法主要是为Applet的正常运行做一些初始化工作。当一个Applet被系统调用时,系统首先调用的就是该方法。通常可以在该方法中完成从网页向Applet传递参数,添加用户界面的基本组件等操作。\x0d\x0a start()方法\x0d\x0a 系统在调用完init()方法之后,将自动调用start()方法。而且,每当用户离开包含该 Applet的主页后又再返回时,系统又会再执行一遍start()方法。这就意味着start()方法可以被多次执行,而不像init()方法。因此,可把只希望执行一遍的代码放在init()方法中。可以在start()方法中开始一个线程,如继续一个动画、声音等。\x0d\x0a stop()方法\x0d\x0a 这个方法在用户离开Applet所在页面时执行,因此,它也是可以被多次执行的。它使你可以在用户并不注意Applet的时候,停止一些耗用系统资源的工作以免影响系统的运行速度,且并不需要人为地去调用该方法。如果Applet中不包含动画、声音等程序,通常也不必实现该方法。\x0d\x0a destroy()方法\x0d\x0a 与对象的finalize()方法不同,Java在浏览器关闭的时候才调用该方法。 Applet是嵌在HTML文件中的,所以destroty()方法不关心何时Applet被关闭,它在浏览器关闭的时候自动执行。在destroy() 方法中一般可以要求收回占用的非内存独立资源。(如果在Applet仍在运行时浏览器被关闭,系统将先执行stop()方法,再执行destroy()方法。

解释原因: 为什么黑屏 ?

答: setVisible(true) 窗口可见. 这个时候已经自动调用了paint函数,setSize()改变了窗口的大小,. 又回自动调用paint函数, paint函数会默认清空之前的绘制. 所以全黑了

解决办法:

        public void paint(Graphics g) {

super.paint(g) // 添加上这行代码, 表示再原有基础上重绘.

g.drawLine(100, 50, 400, 400)

g.drawRect(100, 50, 300, 300)

g.drawOval(100, 50, 300, 300)

}

其他建议:

setSize(500, 500)

setLocation(300, 300)

setVisible(true) // 把可视化,移动到设置大小和位置的后面