首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么要调用"repaint()"而不是直接在Applet中调用"paint(..)"?

当你在Applet中调用repaint()方法时,它会通知系统重新绘制Applet的内容。而直接调用paint(..)方法可能会导致不完整或不正确的绘制。这是因为paint(..)方法是由系统调用的,它会在Applet需要重新绘制时被调用。

调用repaint()方法会触发系统调用update(..)方法,然后update(..)方法会调用paint(..)方法。这样可以确保Applet的内容被正确地绘制。

总之,你应该调用repaint()方法而不是直接调用paint(..)方法,因为这样可以确保Applet的内容被正确地绘制,并且遵循了Java GUI编程的标准实践。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java applet详解

为啥使用applet? 如果不是因为计算机二级或是某些该死的考试需要出题,,我想我是不会理会这中东西的,毕竟这货淘汰了,为啥使用?为了考试。...停止start():当用户从包含applet的页面移除的时候,该方法自动被调用。因此,可以在相同的applet反复调用该方法。 销毁stop:此方法仅当浏览器正常关闭时调用。...Hello.class文件是在app包的,app包是在java_test_two的,而我们的Hello.html是在jht目录的,相对于app目录需要向后退一步,才能进去app目录,codebase...repaint()方法是调用update()方法发出applet需要更新的信号。...使用repaint()和多线程来再applet显示时钟 这个时钟就是电子表的形式,如果做成机械表的样式需要另画钟表,再此不再叙述。

1.3K20

开心档之Java Applet 基础

paint: 该方法在 start() 方法之后立即被调用,或者在 Applet 需要重绘在浏览器的时候调用paint() 方法实际上继承于 java.awt。...120"> 如果 Applet 所在一个包不是默认包,那么所在的包必须在 code 属性里指定,例如: <applet code="mypackage.subpackage.TestApplet.class...也可以在 paint() 方法里得到它的参数。然而,在 Applet 开始得到值并保存了设置,不是每一次刷新的时候都得到值,这样是很方便,并且高效的。...否则,Applet 不能被加载。 消除应用程序的 main()方法。不要为应用程序构造框架窗口,因为你的应用程序显示在浏览器。...strBuffer.append(word); repaint(); } public void paint(Graphics g) { //Draw

72230
  • 双缓冲原理在Awt和Swing实现消除闪烁方法总结

    ---- 在Awt对于窗体画布的重绘其条用顺序是repaint() —>update()—>paint(); 默认的upadate()自带clearRect()方法,即清屏功能,程序运行时我们调用repaint...,我们首先从继承体系来看,JFrame->Frame->Window->Container->Component,在Frame的update()方法是从Container中继承而来的,JFrame却重写了...update()方法如下: public void update(Graphics g) { paint(g); } 对比之后会发现直接调用paint()函数没有clearRect...repaint()方法在重量级组件的时候会调用update方法,在轻量级组件的时候会调用paint方法 即JFrame根本不会去调用update()方法!...然后可以创建一个线程让程序每隔一段时间后自动调用repaint()方法;

    2.3K20

    Flutter 绘制探索 6 | 深入分析 CustomPaint 组件 | 七日打卡

    Flutter 中所有可以看得到的组件,比如 Text、Image、Switch、Slider 等等,追其根源都是画出来的,但通过查看源码可以发现,Flutter 绝大多数组件并不是使用 CustomPaint...本文就来在之前几篇的基础上,看一下使用 repaint 触发刷新的原理。之前一围绕着 CustomPainter 来探索的,本文会对 CustomPaint 组件的各属性进行分析。 ?...这也是为什么子类只能在 super 设置的原因。 ? ---- 2....--- 比如,直接在 Scaffold 里使用 CustomPaint ,paint 回调的 size 为 Size(0,0)。...当遇到动态绘制和确定画板尺寸时,这些知识会让你有一个最明智的决策,不是乱用setState刷新,或不敢用回调的 size 进行处理。

    1.6K10

    Java图形用户界面之Applet设计

    public void paint(Graphics g):在 Applet 绘制指定内容(线条形状、图像、字符串等)。...public void repaint():重新绘制方法,在需要绘制时调用该方法。该方法将会自动调用 update()方法实现重绘。...public void update(Graphics g):更新方法,用背景色清除原有显示内容,再调用paint()完成绘制。 在 Applet ,显示更新是由一个专门的 AWT 线程控制的。...该线程主要负责两种处理:第一,在Applet的初次显示,或运行过程浏览器窗口大小发生变化引起 Applet 的显示发生变化时,该线程将调用 Appletpaint()方法进行 Applet 绘制...;第二,Applet 代码需要更新显示内容,从程序调用repaint()方法,则AWT线程在接收到该方法的调用后,将调用 Applet 的 update()方法,update()方法再调用组件的 paint

    8710

    【Java AWT 图形界面编程】Canvas 组件中使用 Graphics 绘图 ① ( AWT 绘图线程 | Component 绘图函数 )

    一、AWT 绘图线程 在 AWT 绘图程序 , 有一个专门的线程用于绘制界面的线程 , AWT 绘制线程 ; AWT 绘制线程 , 默认处于 等待状态 ; 当组件 第一次显示时 , 会 调用 paint...绘制线程 调用 repaint() 函数 , 重绘组件 ; 在 repaint() 函数 , 先将组件进行隐藏 , 然后再 调用 update(Graphics g) 函数刷新组件 ; 在调用...update(Graphics g) 函数 时 , 先 清除组件所有内容 , 然后再 调用 paint(Graphics g) 函数 绘制组件 ; 上述操作 , 只有 repaint() 函数 是需要手动调用操作的...* * 如果该组件不是轻量级组件,AWT将调用update方法来响应重新绘制的调用。 * 您可以假设后台没有被清除。...JDK1.0 */ public void update(Graphics g) { paint(g); } repaint() : 重绘组件 , 在内部调用

    77030

    【Java AWT 图形界面编程】Canvas 组件中使用 Graphics 绘图 ④ ( AWT 绘图窗口闪烁问题 )

    , 调用 Canvas#repaint 函数 后 , 首先将组件隐藏 , 然后调用 Canvas#update 函数 ; 调用 Canvas#update 函数 后 , 首先会清除组件的内容 , 然后调用...(0, 0, width, height); paint(g); } 清除组件内容调用的是 Canvas#clearRect 函数 ; 调用 Canvas#repaint 函数时..., 会先将屏幕清空 , 然后再重新调用 Canvas#paint 函数进行绘制 , 此时就造成了界面闪烁的现象 ; 为了避免上述闪烁的情况 , 也就是绘制过程 , 不出现 屏幕清空 的情况 ; 这里...paint(buffer); // 将缓冲区的图片绘制到窗口界面 g.drawImage(mBufferedImage, 0...paint(buffer); // 将缓冲区的图片绘制到窗口界面 g.drawImage(mBufferedImage, 0

    83210

    java的双缓冲技术

    DoubleBuffer的对象建立后,显示窗口,程序首先自动调用重载后的paint(Graphics g)函数,在窗口上绘制了一个小圆,绘图线程启动后,该线程每隔30ms修改一下小圆的位置,然后调用repaint...注意,这个repaint()函数并不是我们重载的,而是从Frame类继承而来的。...注意,将这个过程联系起来的是repaint()函数。paint(Graphics g)是一个系统调用语句,不能由程序员手工调用。只能通过repaint()函数调用。...但是即使双缓冲做得再好,有时也是会有闪烁,这就是硬件方面的原因了,我们只能修改程序的相关参数来降低闪烁(比如让画面动得慢一点),不是编程方法的问题。...另外,一些硬件设备也可以实现双缓冲,每次都是先把图象画在缓冲,然后再绘制在屏幕上,不是直接绘制在屏幕上,基本原理还是和文中的类似的。

    2.2K80

    JAVA学习大纲

    解决了程序的扩展问题(编译时多态-重载;运行时多态) 3.2类与对象的概念 3.3类的结构(成员变量、成员方法)和类的定义 3.4什么是构造方法及作用 1.方法名和类名相同   2.只能通过new运算符调用来创建类对象...静态成员); • 静态方法不能引用非静态的变量或方法,当然this也不允许出现; • 子类不能重写父类的静态方法,但可以去掉static重写(不是真正的重写),可以将父类的静态方法隐藏 6.2final...修饰的类为抽象类; • 抽象方法即:由abstract修饰,只提供方法声明不提供方法实现; • 抽象类可以有抽象方法也可以没有抽象方法; • 抽象类不能创建实例;必须通过子类继承并实现其全部抽象方法后方可创建实例...8.1什么是Applet • 是嵌入到网页通过浏览器执行的JAVA小程序,没有main方法,是基于图形界面的; • 可以使用JDK的appletviewer来运行网页文件; 8.2Applet...paint(Graphics g):在Applet显示文字图形等信息,在其生命其中可被多次调用repaint():首先清除Applet界面,然后调用paint(Graphics g) 重新绘图界面

    1.5K21

    BufferedImage与byte[]互转

    .*; 二、为什么要将BufferedImage转为byte数组 在传输,图片是不能直接传的,因此需要把图片变为字节数组,然后传输比较方便;只需要一般输出流的write方法即可; 字节数组变成BufferedImage...OutputStream out);方法可以很好的解决问题; 参数image表示获得的BufferedImage; 参数format表示图片的格式,比如“gif”等; 参数out表示输出流,如果转成...byte[]b);    //将b作为输入流; BufferedImage image = ImageIO.read(InputStream in);     //将in作为输入流,读取图片存入image,...而这里in可以为ByteArrayInputStream(); 六、显示BufferedImage public void paint(Graphics g){ super.paint(g); g.drawImage...(image,x,y,width,height,null);    //image为BufferedImage类型 } 如果自动调用paint方法,则需要调用repaint()方法; 七、实例

    2.1K10

    程序员Java面试的陷阱

    所以在谈话和提问式的面试,总有一些问题是面试者常常提问的,例如:“简单地自我介绍”、“为什么应聘这个职位”、“你认为你为什么能胜任这个工作”、“你能不能举两个例子来证明你刚才所说的能力和素质”、 “...而用关键字new调用构造器,总是会创建一个新的对象,无论内容是否相同。 至于为什么要把String类设计成不可变类,是它的用途决定的。其实不只String,很多Java标准类库的类都是不可变的。...12.多态:在java,对象变量是多态的.java不支持多重继承。 13.动态绑定:调用对象方法的机制。 (1)编译器检查对象声明的类型和方法名。 (2)编译器检查方法调用的参数类型。...此机制主要针对是工具者不是应用及程序。 反射机制的最重要的部分是允许你检查类的结构.用到的API有: java.lang.reflect.Field 返回字段。...具体修改如下: 修改这个applet来画一个绿色的方框不是一个红点。 修改这个applet来用紫色显示你的名字不是一个红点。

    70820

    java applet介绍,Java Applet教程介绍

    public void stop():用于停止Applet。当Applet停止或浏览器最小化时调用它。 public void destroy():用于销毁Applet。它仅被调用一次。...HTML文件形式的Applet的简单示例: 通过html文件执行小程序, 请创建一个小程序并进行编译。之后, 创建一个html文件, 并将applet代码放在html文件。现在单击html文件。...public void paint(Graphics g){ g.drawString(“welcome”, 150, 150); } } 注意:类必须是公共的, 因为其对象是由驻留在浏览器的...myapplet.html appletviewer工具提供的Applet的简单示例: 通过appletviewer工具执行applet, 请创建一个在注释包含applet标签的applet并对其进行编译...public void paint(Graphics g){ g.drawString(“welcome to applet”, 150, 150); } } /* */ 通过appletviewer

    1.3K10

    《Java 2 图形设计卷Ⅱ- SWING》第2章 Swing的基本知识

    这里,内容指包含在小应用程序和或应用程序的组件。实际上,这就是说小应用程序和应用程序必须把组件添加到内容窗格不是把它们直接添加到小应用程序或应用程序(或根窗格)。...首先,我们讨论为什么Swing是线程不安全的,然后介绍在Swing开发过程单线程设计所带来的结果。  让我们面对这个事实,甚至在java,开发多线程的应用程序也是不容易的。...例如,JComponent的repaint、revalidate和invalidate等方法都对放在事件派发线程上的请求进行排队。因此,可从任何线程调用这些方法。...虽然,invokeLater在把可运行对象放入队列后就返回,InvokeAndWait一等待直到已启动了可运行对象的run方法才返回。...组件应该添加到根窗格的内容窗格,同理,必须为内容窗格设置布局管理器不是为小应用程序和应用程序布局管理器。

    2.5K20

    Java-GUI编程之绘图

    在Component类,提供了下列三个方法来完成组件图形的绘制与刷新: ​ paint(Graphics g):绘制组件的外观; ​ update(Graphics g):内部调用paint方法,刷新组件外观...; ​ repaint():调用update方法,刷新组件外观; 一般情况下,update和paint方法是由AWT系统负责调用,如果程序希望系统重新绘制组件,可以调用repaint方法完成。...程序绘图也一样,也需要画布,画笔,颜料等等。AWT中提供了Canvas类充当画布,提供了Graphics类来充当画笔,通过调用Graphics对象的setColor()方法可以给画笔设置颜色。...画图的步骤: 1.自定义类,继承Canvas类,重写paint(Graphics g)方法完成画图; 2.在paint方法内部,真正开始画图之前调用Graphics对象的setColor()、setFont...()等方法设置画笔的颜色、字体等属性; 3.调用Graphics画笔的drawXxx()方法开始画图。

    1.1K00

    Java游戏编程不完全详解-2(1万6千字吐血推荐)

    三种Java游戏类型 使用Java我们可以创建三种类型的游戏:applet游戏,窗体游戏和全屏幕游戏。 applet游戏—是运行在浏览器的应用。它的好处理用户不需要安装应用。...如果需要强制呼叫paint方法,那么需要我们呼叫repaint方法即可,因为该方法会给AWT一个信号,然后让AWT来呼叫paint方法。...该方法将paint转发给任意一个此容器组件的轻量级组件,如果重新实现此 方法,那么JVM应该调用super.paint(g)方法,从而正确呈现轻量级组件。...硬件加速图片显示 硬件加速图片显示(hardware-accelerated image)是图片被存贮在显示内存,不是系统内存,所以使用硬件加速的图片显示速度非常快。...注意,我们把妖怪的位置值使用浮点来计算,不是整数,这是因为如果使用整数,那么每隔10毫秒更新时,有一毫秒的时间图片不会移动。

    1.6K30

    Web渲染和虚拟Dom

    Render树和节点显示坐标都有了,就调用每个节点paint方法,把它们绘制出来。 2、更新Dom造成的问题 原生JS或JQ操作更新DOM时,浏览器会从构建DOM树开始从头到尾执行一遍流程。...3、虚拟树 虚拟DOM就是为了解决浏览器性能问题被设计出来的。...所以,用JS对象模拟DOM节点的好处是,页面的更新可以先全部反映在JS对象(虚拟DOM)上,操作内存的JS对象的速度显然更快,等更新完成后,再将最终的JS对象映射成真实的DOM,交由浏览器去绘制。...试想,在一个Component,开发者一次修改state的很多属性,属性可能是对象,数组,每一个属性都会对应到页面的一个节点的值。...当最终形成了新的Virtual DOM后,转换成真实的DOM这一步才会触发浏览器的reflow和repaint。这是不是就突显出Virtual DOM的优势了。

    74610

    Flutter 绘制探索 1 | CustomPainter 正确刷新姿势 | 七日打卡

    这对于动画来说是灾难性的,每 16 ms 都会构建一次画板,这样的频率,即使是局部刷新,也不是最佳选择。那有没有一种方式,可以悄无声息的地进行绘制,不会触发任何组件的重构?答案是 有的!。...repaint 是 CustomPainter 的成员,类型为 Listenable 可监听对象,当 repaint 值变化时,会通知画板进行 paint 重绘。...当一个疑问一萦绕心头时,我就会想办法去研究它,研究它最好的途径就是不断测试和分析源码。目标可以是 CustomPainter 的源码本身,也可以是源码中使用到CustomPainter的地方。...其实很多知识,一都写在源码,只是很少人看到。通过 CustomPainter 的注释可以发现,触发重绘最高效的方式都是基于可监听对象 实现的。... repaint 秘密。

    1.3K21
    领券