关于paint(),repaint(),paintcomponent()

用74LS194和555定时器DIY流水灯:一个经典的数字电路课程设计复盘(附Multisim仿真文件) 本文详细介绍了使用74LS194移位寄存器和555定时器搭建八路彩灯控制器的完整过程,包括硬件选型、电路设计、调试技巧及常见问题解决方案。作为经典的数字电路课程设计,该项目涵盖了EDA工具应用、电路原理图设计和Multisim仿真等核心技能,适合电子工程学习者实践参考。 阅读详情
事件派发线程::事件派发线程是用于swing组件的。当你在main函数里创建一个窗口类的子类像JFrame,就自动创建了一个事件派发线程,如果你在 窗口里按下一个按钮或操作其它控件,就会产生事件,如果你为这个事件定义了响应代码,这些代码就会在事件派发线程里执行。我的理解是事件派发线程里有个事 件队列,事件派发线程不停地检查事件队列,如果有事件就取出来并执行相应操作。
      在java里设置组件的属性后会导致重绘,只不过由于这个重绘事件被放在事件派发线程里,因此随后调用的堵塞动作会导致事件派发线程被Idle,要避免这种情况,应该将这个堵塞动作放到另外的线程里面完成。
repaint()是触发重绘动作,当调用repaint()后,会通知repaintManager增加一个重绘区域,repaintManager在一定条件下会合并一些重绘区域,然后派发一个绘制动作到事件派发线程(EventQueue)。事件派发线程执行到这个绘制事件时,就会调用组件的paint(),在paint()方法里会先调用update来将重绘区域清空(默认情况下是填充白色),然后再调用paintcomponent()来绘制自身,最后调用paintChildren来绘制所有的子。具体流程可以参考JComponent里的paint()方法。
      由于Button按下的动作就是在事件派发线程里的,因此会导致事件派发线程被idle。
      另外需要注意一点的是,paintcomponent()时是直接绘制,是在Socket触发IDle之前,只要这个方法能被执行到,那么就能重新绘制Button。repaint()是产生一个重绘事件到事件派发线程里去了,所以才不行,paintcomponent()没有产生事件而是直接绘制。记住绘制和触发重绘是两个过程。
     不应该在button的Action事件中处理会导致线程阻塞的动作。之所以推荐repaint(),是因为系统会合并绘制,同时repaint()还能避免组件相互覆盖时的绘制错误。
YOLOv8改进:全网原创首发 | 新颖的多尺度卷积注意力(MSCA),即插即用,助力小目标检测 | NeurIPS2022 多尺度卷积注意力(MSCA),有效地提取上下文信息;1)作为注意力MSCA使用; 阅读详情

相关推荐

无人自行车平衡控制:最小二乘法动态零点拟合实践

本文探讨了无人自行车平衡控制中动态零点的重要性及实现方法。通过最小二乘法拟合车头角度与ROL值的线性关系,解决了固定零点在转向时导致的稳定性问题。实践表明,动态零点拟合能显著提升系统平衡稳定性并降低能耗。

uran的专栏 661

Java 关于paintComponent与paint有什么区别?各自的特征

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

xr506660464的专栏 6439

从JX-2R-01热敏打印机芯到稳定打印:硬件设计与时序控制的实践指南

本文详细解析了JX-2R-01热敏打印机芯的硬件设计与驱动开发全流程。核心内容包括:实现严格的双电源上电时序控制、采用PWM恒流驱动步进电机确保走纸平稳,以及精确控制SPI数据加载与加热脉冲时序以获得清晰打印效果。文章提供了从电路设计、芯片选型到代码调试的实战指南,旨在帮助开发者构建稳定可靠的热敏打印模块。

weixin_29169899的博客 223

Java paint与paintComponent的区别与联系

在上学期,做了一些简单Java程序,做了一个GUI矩阵运算器,还有像什么基于C/S模式的销售管理系统, 聊天室这种东西,都是些组件做的。但这次准备入手做一些用Graphics绘图做的东西。刚入手就发现了这个问题,Java中paint与paintComponent在使用还是存在很多差异的。先把本文讨论主干问题列上:1)联系 2)区别 3)在程序中表现出的异同 4)本次test中发现的有趣的问题与

Broken Geeker 8992

如何加载交易策略EA到MT4/MT5

1、打开MT4/MT5软件 2、首先,必须有一个EA,而且必须是mq4/ex4为扩展名。点击左上角“文件”—“打开数据文件夹”,找到安装路径 3、将EA的ex4或mq4文件放到MT4目录\MQL4\Experts里面(本文以名为Demo的EA为例) 4、如果有DLL库文件,复制到experts目录下的libraries子目录中 5、如果有tpl模板文件,复制到templates目录中 6、添加完成后重启MT4,点击允许EA运行图标 7、在导航中找到刚才安装的EA,拖拽到...

weixin_41364817的博客 7362

STM8S全解析之系列文章4---STM8S芯片项目升级引导程序(使用中断接收升级数据)

STM8S全解析之系列文章4—STM8S芯片项目升级引导程序(使用中断接收升级数据) 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 文章目录STM8S全解析之系列文章4---STM8S芯片项目升级引导程序(使用中断接收升级数据)前言一、Flash划分boot和App二、使用步骤1.引入库2.读入数据总结 前言 用过STM8S都知道它没有中断向量重定向,也就意味着STM8S的中断向量没办法指向其他的位置,间接说明升级的引导

weixin_39853312的博客 1031

java获取panel面板画笔_java - paintComponent()与paint()和JPanel vs Canvas在画笔类型的GUI中 - 堆栈内存溢出...

我一直试图找到一个解决方法,但没有找到一个,特别是对于getGraphics()方法:如何将图形添加到面板?你记得需要绘制的变量是什么,并在paintComponent()中使用它。 例如,您在其他问题中尝试做的事情如下:import java.awt.*;import java.awt.event.*;import javax.swing.*;public class PaintRectang...

weixin_39969257的博客 303

VirtualBox增强功能安装全指南:从下载到配置复制粘贴功能

本文详细介绍了VirtualBox增强功能的完整安装与配置流程,重点解决了虚拟机与主机间复制粘贴、文件拖放等核心协作难题。通过分步指南和故障排查,帮助用户在不同操作系统(如Windows、Linux)中实现无缝集成,提升虚拟化工作效率与体验。

weixin_29206669的博客 419

java导入Graphics g_java中组件的paint(Graphics g)与paintComponent(Graphics g)的区别

/---------------资料1---------------/昨晚小许同学把paintComponent方法以一t之差写成painComponent,在花费了大量的人力物力之后才找到这个错误,不得不感慨:粗心才是程序员的噩梦啊!马士兵曰过:“重写方法你给我在API文档中找方法签名!”,小许,你懂了吗?不过小许问的问题倒让我发现了Swing中paint与paintComponent的区别。查...

weixin_39613712的博客 576

第32篇:Vibe Coding时代:LangGraph + Redis 任务状态持久化实战,解决服务重启后任务状态丢失问题

LangGraph + Redis任务状态持久化方案 本文针对Agent任务状态丢失问题,提出基于Redis的持久化解决方案。当服务重启时,传统内存存储方式会导致任务状态丢失,影响用户体验和运维排查。 核心方案 使用Redis Hash存储任务状态,key格式为agent:task:{task_id} 设计完整状态字段包括task_id、status、progress等关键信息 实现task_store模块提供CRUD操作接口 在Agent执行各节点更新Redis中的任务状态 技术实现 通过Celery执行

sundong_81的博客 43

基于STM32、HAL库的MICRF112YMM-TR 无线收发器驱动程序设计

内部集成了 VCO、PLL、PA、LNA、混频器、滤波器等射频功能单元,极大减少了外部元件数量,降低了设计和布线难度。: 具有多种工作模式(睡眠、待机、接收、发射),待机电流极低,非常适合电池供电的物联网(IoT)设备。是 Microchip 公司生产的一款高性能、低功耗的单片 UHF ASK/FSK 收发器芯片。: 支持 ASK (幅移键控) 和 FSK (频移键控) 调制,适应不同应用需求。// 可以添加其他配置参数,如中心频率、数据速率等。智能家居(安防、遥控、传感)远程钥匙进入系统 (RKE)

corlin6688的博客 418

Java Swing, paint(), paintComponent(), repaint()

在java的小游戏编程中,如果主人公移动,或者组件之间发生碰撞,等,需要重绘界面。 如果是用awt的canvas, 常用的策略是:增加一个BufferedStrategy对象, 然后再调用canvas对象的createBufferedStrategy()等。 在Swing中,比较好用的方法是:paintComponent()加上repaint(),不用paint()的原因是: Ac...

aoyanjiong5253的博客 826

【RT-DETR实战】RT-DETR实战手记(200):端侧实时目标检测,下一步往哪儿走?

昨天深夜调一个模型部署,在树莓派4B上跑RT-DETR-nano,帧率死活卡在8FPS上不去。量化也做了,算子也优化了,内存对齐也检查了,可就是离实时检测的底线还差一截。盯着终端里跳动的数字,突然意识到——我们可能正在接近当前技术路径的瓶颈。端侧实时目标检测的下一个突破口,恐怕不在现有框架的修修补补里。

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 187

Java学习笔记之repaint,paint

这几天在写工程实践项目,五子棋,自然用到一些图形程序设计,期间最让我疑惑的就是repaint(),我就从最初的地方说起。          基本框架JFrame,然后结构中有一个叫做内容面板的层次,然后将JPanel放入其中,所以,我的主要图形和操作都是在JPanel上的,其本身也是一个组件,然后就进入正题。通过JPanel的继承关系可以知道,repaint,paint还有update都是继承而

Vurteon的专栏 1653

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

绘图java_Java中的绘图

Java中的绘图分为AWT的绘图和Swing的绘图。下面逐一论述:AWT的绘图:在Component类里提供了和绘图有关的三个方法:paint(Graphics g):绘制组件的外观update(Graphics g):调用paint方法,刷新组件外观repaint():调用update方法,刷新组件外观上面三个方法的调用关系为:repaint()方法调用update()方法 ,update()方...

weixin_35698091的博客 329

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Swing组件定制显示混乱的问题

定制组件及其子组件绘制时,应尽量使用系统的函数调用结构 系统的paint() 在repaint()被调用,paint() 用又会调用 paintBorder() paintComponent() paintChildren() , 如果直接跳过paint(),直接使用paintComponent进行组件自绘,有可能破坏系统的双缓冲机制,出现背景擦除不净,绘制绘乱、其他区域残影等情况,特别是处理组件拖动时的频繁绘制时更易出现。

nauja的博客 165

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

java

这几天复习了一下前面Swing组件利用的有些知识,遇到以下几个问题,以前只是知道这样做,因为书上就是这样写的,没有独立思考,现在仔细想了一下,查阅了资料,动手测试了。因此和大家交流一下,若有不足请大家补充奥! 1.paint(),repaint()方法,paintComponent(),方法有何差别 (1) paint()方法里面编写的是你在窗体上绘制的图形,当窗体...

u014549663的博客 121

关于Java中的paint,repaint,update三个方法的关系

这些天一直在用repaint()和paint(),到网上一查,还揪出了update(), 其中查到一篇介绍Java中的paint,repaint,update三个方法的关系的文章: 1.  先还是看看 Java API 中的介绍吧:update public void update(Graphics g)     更新组件。     如果此组件不是轻量级组件,则为了响应对 repaint 的调

xiaoliangmei 2万+

图像化界面paint,repaint方法的总结

JAVA 画图中出现的paint()函数 问题:小弟刚学JAVA,有一个问题。以下是一段JAVA代码,它弹出了一个窗口,并在窗口上使用paint()画出矩形、椭圆、扇面等图形。但鉴于paint()并不在main()中执行,所以它会一次画完。现在我想让画图行为受用户控制,比如说,开始只有一个空白窗口。当用户输入1,画出矩形。用户输入2,擦掉矩形。用户输入3,画出椭圆。等等等等。 所以小弟应该如何做?...

tortelee的博客 2万+

关于repaint,paint,paintComponent...的问题

http://topic.youkuaiyun.com/t/20050419/17/3949654.html#A:小弟想把控件设为setEnable(false);开始没问题,可后来在方法中加了一条读Socket的阻塞语句     ReadLine(),问题就来了,界面上每个按钮在阻塞时都没变化,必须要等到方法返回才变为disabled,     如果要它马上变化,试着用repaint(),不行,只能用p

XinVSYuan的专栏 4178

Java | 图形界面中paint,repaint,paintcomponent等函数的理解

事件派发线程::事件派发线程是用于swing组件的。当你在main函数里创建一个窗口类的子类像JFrame,就自动创建了一个事件派发线程,如果你在 窗口里按下一个按钮或操作其它控件,就会产生事件,如果你为这个事件定义了响应代码,这些代码就会在事件派发线程里执行。我的理解是事件派发线程里有个事 件队列,事件派发线程不停地检查事件队列,如果有事件就取出来并执行相应操作。 在java里设置组件的属性后会导致重绘,只不过由于这个重绘事件被放在事件派发线程里,因此随后调用的堵塞动作会导致事件派发线程被Id...

黄佳俊的博客 3640

paint repaint paintComponent update

其实java里设置属性后会导致重绘的,只不过由于这个重绘事件也被放在事件派发线程里的,因此就导致了事件派发线程被Idle了,要避免这种情况,将这个堵塞动作放到另外的线程里面完成。             repaint是出发重绘动作,当调用repaint后,会通知repaintManager增加一个重绘区域,repaintManager在一定条件下会合并一些重绘区域,然后派发一个绘制动作到事件派发...

开发笔记 321

java repaint paint_Java,paint() repaint() paintComponent() update()这些方法的区别是什么?

事件派发线程执行到这个绘制事件时,就会调用组件的paint,在paint方法里会先调用update来将重绘区域清空(默认情况下是填充白色),然后再调用paintComponent来绘制自身,最后调用paintChildren来绘制所有的子。具体流程可以参考JComponent里的paint方法.public void update(Graphics g)调用 paint。不清除背景,而是查看 Co...

weixin_35953060的博客 357

Swing编程方面步骤之三JFrame、JPanel、paint与paintComponent的区别

参考一 关于JFrame和JPanel问题

到底意难平 1万+

关于awt/swing组件中paint, update, paintComponent, repaint的经验

1、Applet/JApplet:  repaint+paint       -- dragged, paint repaint+update+paint  -- dragged, update  Applet:  repaint+paint -- 自动重画    repaint+update --  不自动重画  JApplet:都不自动重画  结论:awt组件中的paint方法自动重画

rui1983YY的专栏 714
上一篇: JAVA中各种去除空格
下一篇: java 中assert的使用
zi_jun
博客等级 码龄18年 109粉丝 7原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值