作者:CJT--陳嘉婷 | 来源:互联网 | 2023-09-24 16:27
本文目录一览:
1、java中paint()的具体用法是什么?
2、java的paint()是哪个类中定义的方法?
3、JAVA中paint()是自动执行的吗?
4、JAVA中Paint与paintComponent方法的区别是什么
5、java paint方法一执行就黑屏
6、在JAVA applet中paint办法为什么会自动执行?
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的paint()是哪个类中定义的方法?
首次出现在java.awt.Component类中,原型是:
public void paint(Graphics g)。
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与paintComponent方法的区别是什么
Component.paint:绘制此组件。
应该绘制组件的内容时调用此方法;例如首次显示组件或者组件已损坏并需要修复时。Graphics 参数中的矩形框设置为需要绘制的区域。重写此方法的 Component 子类不需要调用 super.paint(g)。
出于性能的考虑,首次显示宽度或高度为 0 的 Component 时认为它不需要进行绘制,并且也不需要修复。
Container.paint:绘制容器。该方法将 paint 转发给任意一个此容器子组件的轻量级组件。如果重新实现此方法,那么应该调用 super.paint(g) 方法,从而可以正确地呈现轻量级组件。如果通过 g 中的当前剪切设置完全剪切某个子组件,则不会将 paint() 转发给这个子组件。
Container.paintComponents:绘制此容器中的每个组件。
根据JAVA的API文档说,PAINT是CONTAINER提供的方法,只要容器需要重画的时候就会调用,而paintComponent则是JComponent所提供的方法,它是paint委托的一种重画组件的方法。我的想法是paint只会负责重画容器类的界面例如:Frame Dialog Window之类的,而在这些容器之上的组件则由paint委托paintComponent负责重画。
java paint方法一执行就黑屏
解释原因: 为什么黑屏 ?
答: 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); // 把可视化,移动到设置大小和位置的后面
在JAVA applet中paint办法为什么会自动执行?
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()方法。