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

JAVA swing窗口在运行repaint方法后出现JAVA

swing窗口在运行repaint方法后出现JAVA异常的可能原因有多种,以下是一些常见的原因和解决方法:

  1. 线程安全问题:Swing是单线程模型,所有的界面更新都必须在事件调度线程(Event Dispatch Thread)中进行。如果在其他线程中调用repaint方法,就会导致线程安全问题。解决方法是使用SwingUtilities类的invokeLater或invokeAndWait方法将repaint操作放到事件调度线程中执行。
  2. 组件未正确初始化:在调用repaint方法之前,确保相关的组件已经正确初始化。例如,确保窗口已经创建并添加到容器中,确保需要绘制的组件已经添加到窗口中。
  3. 绘制逻辑错误:如果在绘制逻辑中出现错误,也可能导致异常。例如,访问了空对象或者数组越界等。在绘制逻辑中,要确保所有的对象都已经正确初始化,并且避免出现空指针异常等错误。
  4. 重复调用repaint方法:如果在短时间内多次调用repaint方法,可能会导致异常。这是因为repaint方法会将绘制请求放入事件队列中,如果队列中已经有绘制请求,就会导致重复绘制。解决方法是在调用repaint方法之前,先检查是否已经有绘制请求在队列中,如果有,则不再重复调用。

总结起来,解决Swing窗口在运行repaint方法后出现JAVA异常的关键是确保线程安全、正确初始化组件、避免绘制逻辑错误和避免重复调用repaint方法。如果仍然无法解决问题,可以进一步查看异常信息,以便更准确地定位问题所在。

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

相关·内容

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

最近在做Java版贪吃蛇的入门项目,过程中遇到窗口闪烁的问题总结。...这时Swing出现了,它是建立AWT之上的组件集,不同的平台上都能保持组件的界面样式,因此得到了非常广泛的应用。...1.Frame:重量级组件 2.JFrame:轻量级组件 出现问题: ①.窗体调用repaint()方法时闪烁严重 ②.窗体设置双缓冲重绘,DrawImage()进行缩放图片时会失真,Graphics2D...---- Awt中对于窗体画布的重绘其条用顺序是repaint() —>update()—>paint(); 默认的upadate()中自带clearRect()方法,即清屏功能,程序运行时我们调用repaint...然后可以创建一个线程让程序每隔一段时间自动调用repaint()方法

2.1K20

Java applet详解

2. applet生命周期 初始化init():在这个方法中可以设置一些初始值,像是界面的布局,会在param标签被处理调用这个方法。...启动start():浏览器调用完init()方法,该方法被自动调用。每当用户从其他页面返回到包含Applet的页面时,则调用该方法。...常用的容器有Frame(窗口容器),Panel(面板容器),Applet(java小程序的容器),Dialog(对话框容器)等。...为了applet窗口中绘制图形,可不需要创建Graphics的实例。JApplet的paint()方法给出Graphics对象,通过使用该对象,结果就会出现在浏览器中。...当想要重画applet的区域时调用该方法repaint()方法是调用update()方法发出applet需要更新的信号。

1.2K20

5分钟完成桌面小游戏项目「建议收藏」

图片图片如下: 然后src下新建类BallGame.java,项目结构如下: 第一步:创建项目和窗口代码如下: package 桌面游戏; import javax.swing.JFrame...: 第二步:加载两张图片 详细内容见注释 package 桌面游戏; import java.awt.*; import java.awt.Toolkit; import javax.swing.JFrame...: 第三步:实现动画 package 桌面游戏; import java.awt.*; import java.awt.Toolkit; import javax.swing.JFrame;...: 第四步:桌面游戏代码——实现任意角度飞行 package 桌面游戏; import java.awt.*; import java.awt.Toolkit; import javax.swing.JFrame...double y=100;//小球纵坐标 double degree=3.14/3;//弧度:小球运动的角度,此处是60度 boolean right=true;//判断小球方向 //画窗口方法

54210

Java AWT 图形界面编程】使用鼠标滚轮放大缩小 Canvas 画布 ( 鼠标滚轮事件监听器 MouseWheelListener )

--- 1、鼠标滚轮事件 设置一个缩放比例 scale , 默认为 1.0 ; private double scale = 1.0; // 缩放比例,默认为 1.0 设置鼠标滚轮监听 , ...【Java AWT 图形界面编程】Canvas 中绘制超大图片 ( 使用鼠标拖动查看全图 | 设置 JFrame 窗口自动关闭 | 获取并绘制图片 | 鼠标拖动计算位移 | 画布偏移 ) 博客中 , 绘制了超大图像..., 可以使用鼠标拖动 , 这里在上述基础上 , 新增鼠标滚轮缩放示例 ; 1、代码示例 代码示例 : import javax.swing.*; import java.awt.*; import java.awt.event.MouseAdapter...; import java.awt.event.MouseEvent; import java.awt.event.MouseWheelEvent; import java.awt.event.MouseWheelListener...窗口设置可见 frame.setVisible(true); } } 2、效果展示 程序运行默认效果 : 使用鼠标滚轮缩小画布 : 拖动缩小的画布到中央位置 :

2.2K30

【2021年】小哪吒入门学习Java的第一天

JVM负责java字节码解释运行,边解释边运行,这样速度就会受到一定的影响。 不同的操作系统有不同的虚拟机,java虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,随处运行”。...官方网址 下载和安装eclipse 下载地址 选择Eclipse IDE for Java Developers,根据自己安装的JDK,下载完成,直接解压。...image 工作空间指Java项目存储的目录,一般采用默认工作空间目录即可。 ? image eclipse中创建Java项目,选择new,Java Project,开始新建Java项目。 ?...image 使用eclipse开发和运行Java程序 src目录上右键单击,建立一个Java类。 ? image ? image ?...此处就是:60度 //画窗口方法 public void paint(Graphics g){ System.out.println("窗口被画了一次!"

45240

【2021年】小哪吒入门学习Java的第一天打卡

JVM负责java字节码解释运行,边解释边运行,这样速度就会受到一定的影响。 不同的操作系统有不同的虚拟机,java虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,随处运行”。...官方网址 下载和安装eclipse 下载地址 选择Eclipse IDE for Java Developers,根据自己安装的JDK,下载完成,直接解压。...工作空间指Java项目存储的目录,一般采用默认工作空间目录即可。 eclipse中创建Java项目,选择new,Java Project,开始新建Java项目。...使用eclipse开发和运行Java程序 src目录上右键单击,建立一个Java类。...此处就是:60度 //画窗口方法 public void paint(Graphics g){ System.out.println("窗口被画了一次!"

35310

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

(Graphics g) 函数 , 绘制组件上的所有内容 , 绘制完毕 , AWT 绘制线程又 恢复 等待状态 ; 如果 组件 不是第一次展示 , 而是组件内容进行了修改 , 此时就需要 AWT...绘制线程 中 调用 repaint() 函数 , 重绘组件 ; repaint() 函数 中 , 先将组件进行隐藏 , 然后再 调用 update(Graphics g) 函数刷新组件 ; 调用.../java/painting-140037.html">AWT和Swing中绘画。...* * 注意:有关AWT和Swing使用的绘制机制的更多信息, * 包括如何编写最有效的绘制代码的信息,请参见AWT和Swing中的绘制。.../technetwork/java/painting-140037.html">AWT和Swing中绘画。

71730

java的双缓冲技术

Java的强大特性让其游戏编程和多媒体动画处理方面也毫不逊色。Java游戏编程和动画编程中最常见的就是对于屏幕闪烁的处理。...DoubleBuffer的对象建立,显示窗口,程序首先自动调用重载的paint(Graphics g)函数,在窗口上绘制了一个小圆,绘图线程启动,该线程每隔30ms修改一下小圆的位置,然后调用repaint...看看运行结果,闪烁果然消除了!但是更大的问题出现了,不同时刻绘制的小圆重叠在一起形成了一条线!这样的结果我们更不能接受了。为什么会这样呢?...运行上述修改的程序,我们会看到完美的消除闪烁的动画效果。就像在电影院看电影,每张胶片都是在后台准备好的,播放完一张胶片之后,下一张很快就被播放到前台,自然不会出现闪烁的情形。...如果在swing中,组件本身就提供了双缓冲的功能,我们只需要进行简单的函数调用就可以实现组件的双缓冲,awt中却没有提供此功能。

2.2K80

JAVA实现贪吃蛇游戏

刚好博主b站漫无目的的寻找着题材的时候看到了一个写贪吃蛇游戏的视频,于是便写了这篇文章来怀念一下。...快来和小伙伴们一起玩贪吃蛇吧兄弟们,(虽然编译器运行的贪吃蛇是单机游戏,哈哈,但还是可以两个人轮流玩,比分数的)。 运用到的知识点: GUI:java实现窗体、Swing。...其实JAVA Swing的GUI目前企业中已经不用了,主要是一些学校和培训机构用来教导学生写一些游戏、小项目,练练手的。 多线程:定时器、刷帧等。 注:代码来源b站的一个UP主:狂神。...import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener...运行的结果: 本文中的实现代码其实还有一个缺陷,就是小蛇可以回头,就是小蛇的头可以向最前面的身体方向转,但这样小蛇就会因为碰到自己的身体而被判定为游戏失败。

66930

Java实现坦克大战1.0

介绍-快速入门 绘图原理 面板上画一个小圆。 Component类提供了两个和绘图相关最重要的方法:1. paint(Graphics g)绘制组件的外观 repaint()刷新组件的外观。...当组件第一次屏幕显示的时候,程序会自动的调用paint()方法来绘制组件。...以下情况paint(将会被调用: 1.窗口最小化.再最大化 2.窗口的大小发生变化 3.repaint方法被调用 Graphics 类 Graphics类你可以理解就是画笔,为我们提供了各种绘制图形的方法...(3)事件监听器接口有多种,不同的事件监听器接口可以监听不同的事件,一个类可以实现多个监听接口 (4)这些接口java.awt.event包和javax.swing.event包中定义。...如图所示分析: 因为敌人的坦克,是MyPanel上所以我们的代码MyPanel 因为敌人的坦克,后面有自己特殊的属性和方法,可以单开一个EnemyTank 敌人坦克数量多,可以放入到集合Vector

70510

YourBatman用趣味代码雨祝你:端午安康

AWT AWT(Abstract Window Toolkit)意思是:抽象窗口具集,它是Sun公司最早提供的GUI库,JDK 1.0版本就有提供。...GUI(Graphical User Interface):图形用户界面,是指采用图形方式显示的计算机操作用户界面 AWT是通过调用操作系统的native方法实现的,所以Windows系统上的AWT窗口就是...Swing SwingJava设计的新一代GUI工具包,它的出现旨在解决AWT组件的移植性问题,同时提供更多的企业级应用程序所需要的界面功能。...由于Swing是用Java实现而非native方法实现,因此具有完美的跨平台特性 由于Swing不适用native方法,所以相较于AWT也被称作“轻量级控件” 祝:端午安康 你开发了祝福的程序, 你安装了虚拟的系统...下载直接执行java -jar codeRainApp.jar即可看到效果。

80551

IDEA打开导入别人的java项目不能运行的解决方法

当我们导入或者打开一个java项目出现如下情况: 那么这个方法也许可以解决: https://blog.csdn.net/zhang_li_ke/article/details/94480027?...utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.compare 当我们按照上述方法后又出现了这个情况...: 那么接着我们再用这个方法: https://blog.csdn.net/weixin_44562716/article/details/90641741 最后,当你已经都按照上述方法做了,...代码也都看起来可以运行的样子,但是实际还是不能运行。...后记:本人在导入时又出现了这个情况: 解决方式:选择最上面一个,这里可以参考你自己当前已经可以运行的项目,选一样的就好了。

1.9K40

Java AWT 图形界面编程】使用小键盘按键缩放 Canvas 画布中绘制的背景图像 ( 键盘按键监听 + 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 )

一、键盘按键监听 - 要点分析 ---- 如果要为 Java AWT 界面编程的应用设置键盘按键监听 , 必须为 Frame / JFrame 窗口设置键盘监听 , 为组件设置是无效的 ; 下面是设置键盘监听的核心代码...【Java AWT 图形界面编程】Canvas 中绘制超大图片 ( 使用鼠标拖动查看全图 | 设置 JFrame 窗口自动关闭 | 获取并绘制图片 | 鼠标拖动计算位移 | 画布偏移 ) 博客中 , 绘制了超大图像..., 可以使用鼠标拖动 ; Java AWT 图形界面编程】使用鼠标滚轮放大缩小 Canvas 画布 ( 鼠标滚轮事件监听器 MouseWheelListener ) 博客中 , 新增鼠标滚轮缩放画布示例..., 但是使用鼠标拖动时 , 拖动的效果也随之缩放, 如 缩小画布 , 移动鼠标 , 移动距离对应的缩放效果也随之缩小 ; Java AWT 图形界面编程】使用鼠标滚轮放大缩小 Canvas 画布中绘制的背景图像...} } 2、执行效果 执行 , 将图像中船头的 H 标识放置界面中心 ; 将鼠标指针放在 H 位置 , 点击一次 , 按下数字键 9 , 放大 9 倍的效果如下 :

1.8K20

Java游戏编程不完全详解-3(爆肝一万七千字)

Java最新开源版本中正常运行。...下面描述的是事件的工作流程: 用户按下键 操作系统发送键盘事件给Java运行java运行时产生事件对象,然后添加到AWT的事件队列中去 AWT事件分发送线程分配事件对象给任何一个KeyListeners...以上代码中,我们Robot类移动鼠标,但是鼠标移动事件可能不会立即出现,所以代码会检查鼠标移动事件是否定位在屏幕中央。...游戏中使用Swing组件的技巧如下: 绘制所有的Swing组件时,只需要在动画循环过程中,呼叫主面板的paintComponents()方法即可: //绘制我们的图形 draw(g); //绘制Swing...我们的代码中,需要忽略潜在的重绘请求,如果一个按钮被按下之后的话,然后需要在动画循环的draw方法出现。为解决这个问题,需要我们捕获重绘请求,然后忽略它。

2.1K10
领券