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) // 把可视化,移动到设置大小和位置的后面