关键词:swing,paint,paintComponent,paintBorder
paint :绘制容器。
paintComponents : 绘制此容器中的每个组件。
由此不难看出,二者就是房子与家具的关系。
但是该类中并不包含paintBorder方法,由此我想,该方法应该是位于扩展包中,很幸运,在javax.Swing包中的JComponent类中,找到了paint,paintComponent和paintBorder三个方法,我想这应该就是小朱宇要问的,查看API,有如下解释:
paint :由 Swing 调用,以绘制组件。此方法实际上将绘制工作委托给三个受保护的方法:paintComponent、paintBorder 和 paintChildren。按列出的顺序调用这些方法,以确保子组件出现在组件本身的顶部。子类可以始终重写此方法。只想特殊化 UI(外观)委托的 paint 方法的子类只需重写 paintComponent。
paintComponent :如果 UI 委托为非 null,则调用该 UI 委托的 paint 方法。向该委托传递 Graphics 对象的副本,以保护其余的 paint 代码免遭不可取消的更改
paintBorder :绘制组件的边框。
paintChildren :绘制此组件的子组件。
由此可以看出,在Swing 中,组件绘制 paint() 方法会依次调用 paintComponent(),paintBorder(),paintChildren() 三个方法。根据方法名就可以看出,paintComponent() 绘制组件本身,paintBorder() 绘制组件的边框,paintChildren() 绘制组件的子组件,所以Swing 编程时,如果继承 JComponent 或者其子类需要重绘的话,只要覆写 paintComponent() 而不是 paint(),方法 paintBorder(),paintChildren() 一般默认即可。
paint是全部东西都要重画的
paintComponent只是重画上面的容器
所以很明显的
后者速度比前者要快
一般情况下都是用后者的
除非对于JFrame,才会用到前者
如下面的程序我们写了一个类ZPanle继承自JPanel,我们只要重写protected void paintComponent(Graphics g) 就可以得到不同的显示效果。
paint :绘制容器。
paintComponents : 绘制此容器中的每个组件。
由此不难看出,二者就是房子与家具的关系。
但是该类中并不包含paintBorder方法,由此我想,该方法应该是位于扩展包中,很幸运,在javax.Swing包中的JComponent类中,找到了paint,paintComponent和paintBorder三个方法,我想这应该就是小朱宇要问的,查看API,有如下解释:
paint :由 Swing 调用,以绘制组件。此方法实际上将绘制工作委托给三个受保护的方法:paintComponent、paintBorder 和 paintChildren。按列出的顺序调用这些方法,以确保子组件出现在组件本身的顶部。子类可以始终重写此方法。只想特殊化 UI(外观)委托的 paint 方法的子类只需重写 paintComponent。
paintComponent :如果 UI 委托为非 null,则调用该 UI 委托的 paint 方法。向该委托传递 Graphics 对象的副本,以保护其余的 paint 代码免遭不可取消的更改
paintBorder :绘制组件的边框。
paintChildren :绘制此组件的子组件。
由此可以看出,在Swing 中,组件绘制 paint() 方法会依次调用 paintComponent(),paintBorder(),paintChildren() 三个方法。根据方法名就可以看出,paintComponent() 绘制组件本身,paintBorder() 绘制组件的边框,paintChildren() 绘制组件的子组件,所以Swing 编程时,如果继承 JComponent 或者其子类需要重绘的话,只要覆写 paintComponent() 而不是 paint(),方法 paintBorder(),paintChildren() 一般默认即可。
paint是全部东西都要重画的
paintComponent只是重画上面的容器
所以很明显的
后者速度比前者要快
一般情况下都是用后者的
除非对于JFrame,才会用到前者
如下面的程序我们写了一个类ZPanle继承自JPanel,我们只要重写protected void paintComponent(Graphics g) 就可以得到不同的显示效果。
package com.zakisoft.frame02; import java.awt.Graphics; import java.awt.Image; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JPanel; public class ZPanel extends JPanel { private static final long serialVersionUID = 6702278957072713279L; private Icon wallpaper; public ZPanel() { System.out.println("f:ZPanel()"); } protected void paintComponent(Graphics g) { if (null != wallpaper) { processBackground(g); } System.out.println("f:paintComponent(Graphics g)"); } public void setBackground(Icon wallpaper) { this.wallpaper = wallpaper; this.repaint(); } private void processBackground(Graphics g) { ImageIcon icon = (ImageIcon) wallpaper; Image image = icon.getImage(); int cw = getWidth(); int ch = getHeight(); int iw = image.getWidth(this); int ih = image.getHeight(this); int x = 0; int y = 0; while (y <= ch) { g.drawImage(image, x, y, this); x += iw; if (x >= cw) { x = 0; y += ih; } } } }
发表评论
-
Java连接sql2005数据库三步曲
2012-12-27 10:48 720one、two、three 导入java包 import ja ... -
主题:Java面试122题 .
2012-12-27 10:17 8932012-06-05 09:17 592人阅读 ... -
Java六大必须理解的问题
2012-12-27 10:17 5342012-05-24 11:39 793人阅读 评论(6) 收 ... -
多线程知识点整理 .
2012-12-27 10:17 585基本概念 多线程程序 ... -
数据连接池的基本实现 .
2012-12-26 13:20 8571、 实现途径: 编写JdbcPool implemen ... -
java 常用三大集合类
2012-11-23 11:07 13775一、Set集合,其主要实现类有HashSet、TreeSet。 ... -
Java笔记9(Java网络编程)
2012-10-16 14:39 747Java基础9 Java基础9 1 文件结构 ... -
Java笔记8(jdbc-odbc、jdbc、JTable使用、Min版学生管理系统)
2012-10-16 14:34 1450Java基础8 Java基础8 1 文件结构 ... -
swing编程实现闪屏登录效果
2012-09-18 12:07 27511、先写一个闪屏类 package com.mhl.Tools ... -
Java笔记7(IO操作、图片拷贝、记事本、测试声音、坦克大战)
2012-08-23 15:05 1053File类的基本用法_Demo12_1.java /* ... -
Java笔记6(多线程、机票售票系统、坦克大战)
2012-08-23 14:39 1625多线程Demo10_1.java /* * 演 ... -
Java笔记5(java绘图原理、事件处理机制、监听器、坦克大战)
2012-08-23 14:30 2862java绘图原理Demo9_1.java /* ... -
java中equals和==的区别
2012-08-17 10:33 17539ava中equals和==的区别 值类型是存储在内存中的堆栈( ... -
Java笔记4(布局管理器、常用组件、qq聊天界面、记事本)
2012-08-13 14:12 3400文件结构 布局管理器Demo8_1.java pa ... -
Java笔记3(泛型、异常、成绩评分程序)
2012-08-09 10:31 1062文件结构 泛型与异常 异常 Class7b / c ... -
Java笔记1(java类、接口、封装、继承、多态、约瑟夫环应用)
2012-08-09 10:26 1070文件结构 Java访问修饰符 com.xiaoming ... -
Java笔记2(数组、排序、查找、集合类、移位)
2012-08-09 10:18 1776文件结构 Class5 / com.t ...
相关推荐
它通过调用三个受保护的方法来完成:paintComponent、paintBorder和paintChildren。这些方法的调用顺序分别是先绘制组件自身,再绘制边框,最后绘制子组件。 JComponent的paint方法是一个非常核心的方法,它实际上...
"2022年自考04747java程序设计题库...14. 一般的绘图程序要定义一种 JPanel 子类,并重定义 paintComponent() 方法,在这个方法中调用绘图方法,绘制多种图形。 15. 一种 InetAddress 对象具有主机的域名和 IP 地址。
开发者可以通过重写组件的`paint`或`paintComponent`方法来利用`Graphics`对象进行绘图。 饼图是一种常见的数据可视化方式,用于展示数据的比例关系。在Java中,我们可以使用`java.awt.Polygon`类来创建自定义形状...
22. 对象概念:并非所有对象都必须有继承性,对象是属性和方法的封装体,对象间通过消息传递通讯,操作是对象的动态属性。 23. 对话框特点:对话框通常不能被最大化或最小化,它提供临时交互界面。 24. Excel分类...
- 继承:一个类可以从另一个类派生,继承其属性和方法,如Applet类是Component类的子类,继承了其一部分功能。 - 多态:允许不同类的对象对同一消息作出响应,增强了代码的灵活性和可扩展性。 了解这些知识点后,...
3. **描绘简单图形**:描述中提到的"例7.4 描绘一个简单的图形"表明`DrawFrame`可能包含一个绘制图形的方法,这通常是通过覆盖`paint`或`paintComponent`方法实现的。在这个方法中,开发者可以使用`Graphics`或`...
它是Java进行图形绘制的基础,通常与组件的`paint()`或`paintComponent()`方法一起使用来在屏幕上呈现图形内容。 5. **对象和方法**:在Java中,对象是类的实例,而方法是类中定义的行为。创建对象使用`new`关键字...
这通常在`paint()`或`paintComponent()`方法中实现,用于自定义组件的外观。 **5. 异步通信** AWT采用事件驱动模型,意味着程序的执行流程由用户交互触发的事件决定。这有助于保持用户界面的响应性,因为主UI线程...
3. Java图形用户界面(GUI)编程:在创建自定义的JPanel子类时,需要重写`paintComponent()`方法来绘制图形,而不是`paint()`或`update()`方法。 4. 计算机病毒理解:计算机病毒是具有自我复制和破坏性的程序,但...
这是因为paintComponent()方法是 Swing 中用于实际绘图的函数,而paint()和update()通常用于处理组件的整个更新过程。 8. 当k=12.5时,len(str(k))=5,因为将浮点数12.5转换为字符串会得到"12.5",长度为5个字符。 ...
开发者可能使用了Java的`java.awt.Canvas`或`javax.swing.JComponent`作为绘图的基础,重写了`paint()`或`paintComponent()`方法来进行图形渲染。通过分析源代码,我们可以看到如何在特定的事件(如窗口大小改变)下...
在AWT中,我们使用paint(Graphics g)和update(Graphics g)方法进行绘图,而Swing提供了paintComponent(Graphics g)、paintBorder(Graphics g)和paintChildren(Graphics g)方法。repaint()方法用于触发重绘。 **外观...
- 在 Java 中,`JPanel` 是一个常用的容器组件,要自定义绘图,需要重写 `paintComponent()` 方法,而不是 `paint()`, `repaint()`, 或 `update()`。 4. **外围设备**: - 外围设备包括主机之外的各种硬件,如...
`paint()`和`update()`是父类Component的方法,`repaint()`是用来请求组件重绘的方法。所以答案是B。 8. **多线程与Runnable接口**:实现Runnable接口并重写run()方法是创建线程的一种方式。线程对象的创建和启动...
对象的使用包括引用对象的成员变量和方法,通过运算符·可以实现对变量的访问和方法的调 用,变量和方法可以通过设定一定的访问权限(见下面的例子)来允许或禁止其它对象对它的 访问。 我们先定义一个类 Point。 例子...
5. 绘图程序中的JPanel:在Java Swing中,要实现自定义绘图,需要创建`JPanel`的子类,并重写`paintComponent()`方法,而不是`paint()`或`update()`,`paintComponent()`是专门为自定义组件绘图设计的。 6. Visual...
- `paint()`方法用于在容器上进行基本的绘画操作,但在Swing中推荐重写`paintComponent()`方法来实现更复杂的绘图功能。 - `repaint()`方法用于刷新组件,使其重新绘制。 - `update()`方法用于更新组件的状态,但...
**解释:** 对象是面向对象编程的基本单元,由属性和方法组成。对象间的交互通过消息传递来实现。因此,正确答案是“对象间的通信靠消息传递”。 ### 14. MySQL结果集读取 **知识点:** PHP与MySQL交互时读取查询...
5. 在Java Swing中,要重写JPanel的paintComponent()方法(选项B)来绘制自定义图形,而非paint()方法。 6. PowerPoint2000的普通视图左侧窗口通常显示幻灯片的大纲,但题目描述错误,因为大纲通常在大纲视图中查看...
- `paint()`: 基础的绘图方法。 - `paintComponent()`: 用于子类覆盖,进行自定义绘图。 - `repaint()`: 强制组件重新绘制。 - `update()`: 更新组件的内容。 - **结论**: 若要在JPanel子类中重定义绘图方法,...