- 浏览: 887489 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (687)
- java (127)
- servlet (38)
- struts (16)
- spring (22)
- hibernate (40)
- javascript (58)
- jquery (18)
- tomcat (51)
- 设计模式 (6)
- EJB (13)
- jsp (3)
- oracle (29)
- RUP (2)
- ajax (3)
- java内存管理 (4)
- java线程 (12)
- socket (13)
- path (5)
- XML (10)
- swing (2)
- UML (1)
- JBPM (2)
- 开发笔记 (45)
- Note参考 (15)
- JAXB (4)
- Quartz (2)
- 乱码 (2)
- CSS (2)
- Exception (4)
- Tools (7)
- sqlserver (3)
- DWR (7)
- Struts2 (47)
- WebService (2)
- 问题解决收藏 (7)
- JBOSS (7)
- cache (10)
- easyUI (19)
- jQuery Plugin (11)
- FreeMarker (6)
- Eclipse (2)
- Compass (2)
- JPA (1)
- WebLogic (1)
- powerdesigner (1)
- mybatis (1)
最新评论
-
bugyun:
受教了,谢谢
java 正则表达式 过滤html标签 -
xiongxingxing_123:
学习了,感谢了
java 正则表达式 过滤html标签 -
wanmeinange:
那如果无状态的。对同一个任务并发控制怎么做?比如继承Quart ...
quartz中参数misfireThreshold的详解 -
fanjieshanghai:
...
XPath 元素及属性查找 -
tianhandigeng:
还是没明白
quartz中参数misfireThreshold的详解
其实java里设置属性后会导致重绘的,只不过由于这个重绘事件也被放在事件派发线程里的,因此就导致了事件派发线程被Idle了,要避免这种情况,将这个堵塞动作放到另外的线程里面完成。
repaint是出发重绘动作,当调用repaint后,会通知repaintManager增加一个重绘区域,repaintManager在一定条件下会合并一些重绘区域,然后派发一个绘制动作到事件派发线程(EventQueue)。
事件派发线程执行到这个绘制事件时,就会调用组件的paint,在paint方法里会先调用update来将重绘区域清空(默认情况下是填充白色),然后再调用paintComponent来绘制自身,最后调用paintChildren来绘制所有的子。具体流程可以参考JComponent里的paint方法.
public void update(Graphics g)
paint
。不清除背景,而是查看 ComponentUI.update
,它由 paintComponent
调用。JComponent:paint(Graphic g)由 Swing 调用,以绘制组件。应用程序不应直接调用 paint
,而是应该使用 repaint
方法来安排重绘组件。
此方法实际上将绘制工作委托给三个受保护的方法:paintComponent
、paintBorder
和 paintChildren
。按列出的顺序调用这些方法,以确保子组件出现在组件本身的顶部。一般而言,不应在分配给边框的 insets 区域绘制组件及其子组件。子类可以始终只重写此方法。只想特殊化 UI(外观)委托的 paint
方法的子类应该只重写 paintComponent
。
protected void paintComponent(Graphics g)
null
,则调用该 UI 委托的 paint 方法。向该委托传递 Graphics
对象的副本,以保护其余的 paint 代码免遭不可取消的更改(例如 Graphics.translate
)。
如果在子类中重写此方法,则不应该对传入到 Graphics
中的内容进行永久更改。例如,不应更改剪裁矩形
或修改转换。如果需要进行这些操作,您会发现根据传入的 Graphics
创建一个新 Graphics
并操作它会更容易一些。另外,如果不调用超类的实现,则必须遵守不透明属性,也就是如果此组件是不透明的,则必须以透明的颜色完全填充背景。如果不遵守不透明属性,则很可能看到可视化的人为内容。
传入的 Graphics
对象可能具有与该对象上已安装的标识转换所不同的转换。在这种情况下,如果多次应用其他转换,则可能得到不可预料的结果。
protected void paintChildren(Graphics g)
shouldUseBuffer
为 true,则所有的组件祖先都没有缓冲区,并且组件子级可以使用缓冲区(如果有)。否则,祖先具有当前正在使用的缓冲区,并且子组件应该不使用缓冲区进行绘制。 public void print(Graphics g)
printComponent
、printBorder
和 printChildren
的调用。建议不重写此方法,而是重写前面提及的方法之一。此方法设置组件的状态,使得双缓冲区不被使用,例如直接在传入的 Graphics
上完成绘制。protected void printComponent(Graphics g)
paintComponent
。如果要在打印时添加特殊的绘制行为,可重写此方法
protected void printChildren(Graphics g)
paintChildren
。如果希望以不同于绘制的方式打印子组件,则重写此方法public void updateUI()
JComponent
的子类必须以如下方式重写此方法:
public void updateUI() { setUI((SliderUI)UIManager.getUI(this); }
发表评论
文章已被作者锁定,不允许评论。
-
操作系统的目标和作用
2012-07-05 23:46 1314操作系统的目标 目前存在着多种类型的OS,不同类型的OS ... -
利用(ffmpeg)生成视频缩略图(java)
2012-07-01 01:11 0对于上传视频生成缩略图使用的是ffmpeg进行生成的。 自己在 ... -
对Java多线程技术中所有方法的详细解析
2012-06-06 11:32 775一、run()和start() 这两个 ... -
java乱码
2012-06-06 11:33 961自从接触Java和JSP以来, ... -
学习apache commons-io类库中的文件清除器
2011-07-06 23:26 1429学习apache commons-io 1.4类库中的File ... -
java 正则表达式 过滤html标签
2011-05-24 15:10 5346前段时间开发的时候要读取一篇文章的简介内容(也就是前200个字 ... -
转---Eclipse中web-inf和meta-inf文件夹的信息
2011-05-24 13:08 1126Eclipse中web-inf和meta-inf ... -
logback与Log4J的区别
2011-05-17 23:34 1420Logback和log4j是非常相似 ... -
性能优化
2011-04-14 16:10 1162(1)jdbc性能优化 jdbc程序的性能主要由两个因素决定 ... -
JAVA的Random类(转)
2011-04-12 00:21 903Random类中实现的随机算法是伪随机,也就是有规则的随机。在 ... -
非阻塞的Socket链接
2011-04-10 21:59 886import java.io.IOException; ... -
创建临时文件
2011-04-10 21:55 1087package net.java2000.io; ... -
面向对象设计的基本原则
2011-04-07 10:28 1139摘自:http://soft6.com/tech/6/6501 ... -
proxool
2011-04-02 15:01 850属性列表说明: fatal-sql- ... -
当前Java软件开发中几种认识误区
2011-04-01 10:12 871越来越多人开始使用Java ... -
Java中查看一个方法被调用的层次(Reflection、StackTrace)
2011-04-01 00:53 2025package test; public class Mai ... -
反序列化时恢复transient字段
2011-03-30 13:20 1209我们知道将字段设置为transient,可以避免该自动被序列化 ... -
用socket连接服务器直接发送接收邮件
2011-03-22 17:22 1295首页 新闻 论坛 问答 博客 招聘 更多 ▼ 专栏 &l ... -
利用JavaMail收/发Gmail邮件(SSL)
2011-03-22 17:21 2378Gmail目前已经启用了POP3和SMTP服务,具体情况请看 ... -
Java 反射与内省
2011-03-14 22:08 1067一、java反射机制 JAVA反 ...
相关推荐
在Swing中,`update`方法仅仅是简单地调用`paint`方法来完成组件的渲染。 - **paintComponent方法**: 这个方法是用于绘制组件自身而不包括子组件的方法。例如,对于`JComponent`类来说,它会在调用`paintComponent`...
同时,AWT的`Canvas`类是用于自定义绘图的空白画布,开发者可以通过重写`paint()`或`update()`方法来实现自己的绘图逻辑。 2. **Swing绘图** Swing是建立在AWT之上的GUI库,提供了更为丰富和现代的组件。Swing中的...
- 重画过程:`repaint()`调用`update()`,`update()`再调用`paint()`。 - 了解`paintComponent()`方法在自定义组件中的使用。 4. **代码优化**: - 将经常变化的数值定义为常量。 - 使用构造方法初始化对象的...
你可以重写`paint()`方法或者`update()`方法来进行定制化的绘制。 3. **Graphics对象** 当你在`Canvas`上进行绘制时,会使用到`Graphics`对象。它是所有图形绘制操作的入口点,提供了各种绘制方法,如`drawLine()`...
`repaint()`会触发`paint()`或`update()`方法,更新组件的视图。 9. **Swing的替代方案** 虽然AWT可以实现这个功能,但Swing提供了更好的用户体验和更多的组件选择。使用`JPanel`代替`Canvas`,并覆盖`...
在AWT中,我们使用paint(Graphics g)和update(Graphics g)方法进行绘图,而Swing提供了paintComponent(Graphics g)、paintBorder(Graphics g)和paintChildren(Graphics g)方法。repaint()方法用于触发重绘。 **外观...
在JPanel子类中,需要重写`paintComponent()`方法,而不是`paint()`、`repaint()`或`update()`方法。`paintComponent()`是用于绘制组件内容的专用方法,可以在此调用绘图API如`Graphics`来绘制图形。 2. 程序设计...
`paint()`和`update()`是父类Component的方法,`repaint()`是用来请求组件重绘的方法。所以答案是B。 8. **多线程与Runnable接口**:实现Runnable接口并重写run()方法是创建线程的一种方式。线程对象的创建和启动...
- 在 Java 中,`JPanel` 是一个常用的容器组件,要自定义绘图,需要重写 `paintComponent()` 方法,而不是 `paint()`, `repaint()`, 或 `update()`。 4. **外围设备**: - 外围设备包括主机之外的各种硬件,如...
- `paint()`方法用于在容器上进行基本的绘画操作,但在Swing中推荐重写`paintComponent()`方法来实现更复杂的绘图功能。 - `repaint()`方法用于刷新组件,使其重新绘制。 - `update()`方法用于更新组件的状态,但...
- `repaint()`: 强制组件重新绘制。 - `update()`: 更新组件的内容。 - **结论**: 若要在JPanel子类中重定义绘图方法,应覆盖`paintComponent()`方法。 #### 16. 数组元素访问 - **知识点**: 在Java中,数组是...