`
cscoder
  • 浏览: 15931 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

paint().paintComponent()方法的区别

 
阅读更多
1 - paint() 中调用 paintComponent(), paintBorder(), paintChildren()

2 - 最重要的区别是“双缓冲”。Swing 组件的 paint() 中实现了双缓冲,所以不要随便去覆写,会破坏双缓冲的,————建议的方式是覆写 paintComponent(),很多人做的小程序会”闪烁“,就是因为他们覆写了 paint() 方法,破坏了Swing本身的双缓冲。Swing 不建议用户自己实现双缓冲。

3 - 覆写 paint(),如果新方法没有去调用 paintChildren(),还会造成子控件不显示,鼠标移上去才显示,这个也是很多新手问的问题: “为什么我的按钮只有鼠标移上去才显示?”

4 - 只有极少数的情况可能需要覆写 paint() 方法,通常是为了实现特殊的绘图效果,或者特殊的优化,比如 JViewport 覆写了 paint() 方法,使用“延迟重绘”的方式来合并当滚动条移动时一些特别频繁的重绘请求,等等。


paint()是基础,paint中会调用 paintComponent(), paintBorder(), paintChildren()
这三个方法,
这三个方法一个是绘制背景,一个绘制边框,一个绘制子控件。
一般重写背景,是建议重写paintComponent()的。<span style="font-family: Arial, Helvetica, sans-serif;"> </span>

文章地址:http://blog.csdn.net/qq_1017097573/article/details/51694668


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 代码免遭不可取消的更改

文章地址:http://javapub.iteye.com/blog/763849
分享到:
评论

相关推荐

    java-paint.rar_java paint_paint_paint java_绘图_绘图程序 java

    而在Swing中,我们通常会使用`JComponent`或其子类如`JPanel`,并重写`paintComponent(Graphics g)`方法来进行绘制。`Graphics2D`是`Graphics`的一个子类,提供了更多的高级绘图功能,如旋转、缩放和抗锯齿处理。 ...

    神奇的paint方法

    在`paint`方法内部,它首先调用`paintComponent`、`paintBorder`和`paintChildren`,分别处理组件内容、边框和子组件的绘制。 在`ChartTest.java`这个文件中,我们可以推测作者可能创建了一个用于显示图表的自定义...

    paint.rar_2D图形编程_Java_

    可能使用了Swing的JFrame作为主窗口,JButton用于用户交互,以及一个自定义的绘图面板,该面板重写了paintComponent()方法,在这里实现2D动画的绘制。动画效果可能是通过定时器(javax.swing.Timer)来实现,每次...

    java闪屏类

    在这个场景中,我们关注的是如何在Java中实现这样一个功能,特别是使用`paint`方法来绘制界面。 首先,让我们了解一下Java中的图形用户界面(GUI)开发。Java提供了丰富的API来创建和管理GUI,主要由`javax.swing`...

    java paintComponent 拖拽操作

    `paintComponent`是`paint`方法的一部分,它处理组件的绘图细节,而`paint`方法则负责整个组件的完整绘画过程,包括边框、背景和子组件。 `drag and drop`(拖放)操作是GUI中常用的一种交互方式,允许用户通过鼠标...

    paint

    在Swing中,通常推荐使用`paintComponent`方法而非直接重写`paint`,因为`paintComponent`方法更适合进行组件的具体绘制,而`paint`方法则处理一些额外的步骤,如调用`paintBorder`和`paintChildren`,确保边框和子...

    画图工具 java实现

    在Java中,我们通常在Component或Canvas类的子类中重写`paint()`或`paintComponent()`方法来实现自定义绘图。在描述中提到的`Paint1.java`, `Paint2.java`, 和 `Paint3.java` 文件很可能包含了这些关键的绘图逻辑。 ...

    Java游戏编程从入门到精通

    为了实现这一点,我们需要创建一个新的面板(`JPanel`),并在其中重写`paint`方法。 **示例代码详解**: ```java import javax.swing.*; import java.awt.*; public class MyWindow extends JFrame { public ...

    num_01.rar_java画板的实现_thoucw6

    综上所述,Java画板的实现涉及到对AWT或Swing库的使用,通过创建和定制`Canvas`或`JPanel`类来实现图形绘制,并通过`paint`或`paintComponent`方法定义绘图逻辑。在实际应用中,我们还需要考虑事件处理、动画效果...

    Java Methods-Graphics.ppt

    5. **paint和paintComponent方法** - **paint方法**:javax.swing.JFrame类中的paint方法是默认的绘制方法,当窗口需要更新时调用。 - **paintComponent方法**:通常在自定义组件(如JPanel)中重写paintComponent...

    java 绘图 是一个pdf 文档 繁体字的

    - 显示窗口或调用`repaint()`方法时,系统会自动调用`paintComponent()`方法来重新绘制图形或文字。 ##### 示例代码 ```java public class JPanelExample extends JPanel { @Override protected void ...

    JAVA中的控件重绘

    - `paint()`和`paintComponent()`方法:在AWT中,`paint()`方法是组件的基本绘图方法,而在Swing中,`paintComponent()`方法用于执行实际的组件绘制。这两个方法由系统自动调用,程序员可以通过覆盖这些方法实现...

    在 Java 应用程序中创建图像.rar_图形 Java

    这些方法可以在`paint()`或`paintComponent()`方法中调用,以在组件上进行绘制。 在创建自定义组件时,通常会重写`paintComponent(Graphics g)`方法,其中`g`参数是`Graphics`对象,用于实际的绘图操作。例如,你...

    JAVA画图形学.zip

    你可以通过重写`paint()`或`paintComponent()`方法,在组件上进行绘制操作。例如,你可以创建一个自定义的`JPanel`,并在其`paintComponent()`方法中进行图形绘制: ```java import javax.swing.JPanel; import ...

    java 画曲线+图形的保存于打开

    首先,要画曲线和图形,我们通常会使用 `java.awt.Canvas` 或 `javax.swing.JComponent` 类作为画布,然后重写 `paint` 或 `paintComponent` 方法。在这个方法里,我们可以获取到一个 `Graphics` 对象,它是绘制的...

    java中如何显示图形

    Swing的绘图是在`paintComponent()`方法中进行的,而不是`paint()`。 ```java import javax.swing.*; public class MyPanel extends JPanel { protected void paintComponent(Graphics g) { super....

    java绘图 设置画笔属性 实例代码

    在`JFrame`或`JPanel`上重写`paintComponent(Graphics g)`方法,其中`g`参数是用于绘图的对象,可以通过类型转换为`Graphics2D`,例如: ```java @Override protected void paintComponent(Graphics g) { super....

    java画矩形

    当你创建一个窗口组件,比如`JFrame`或`Canvas`,你可以重写`paint`或`paintComponent`方法来在组件上进行绘图。例如,我们可以创建一个简单的`JFrame`,并在其上绘制矩形: ```java import javax.swing.JFrame; ...

    Java画图板 呵呵

    要创建一个画图板,我们需要定义一个继承自Canvas的类,然后重写它的paint方法。在这个方法里,我们可以使用Graphics对象进行绘制,如绘制直线、曲线、填充形状、设置颜色、字体等。例如: ```java import java.awt...

    2021-2022计算机二级等级考试试题及答案No.2424.docx

    1. `JPanel` 绘图:在 Java GUI 编程中,如果要自定义绘图,需要继承 `JPanel` 类,并重写 `paintComponent()` 方法,而非 `paint()` 或其他选项。在这个重写的方法里,调用 `super.paintComponent(g)` 来确保基本...

Global site tag (gtag.js) - Google Analytics