【问题标题】:Java Swing Applet redrawing garbage after mouse eventJava Swing Applet在鼠标事件后重绘垃圾
【发布时间】:2011-09-17 21:25:59
【问题描述】:

我的 Java Swing Applet 出现问题。我最近重新格式化了我的计算机并重新安装了 Eclipse 以继续处理我的应用程序,但是当屏幕重绘时我遇到了问题。到目前为止,代码已经 100% 运行(没有问题),所以我确定这是我的配置设置的问题。

Applet 可以正常加载,但在发生任何形式的事件后,屏幕会重绘为以下内容: http://i.imgur.com/vODrs.png

我正在使用 Eclipse Helios,几乎没有安装框架。它配置为使用 jre6,但我不知道为什么会发生这种情况。

**另外请注意,如果我将小程序嵌入到 html 文件中,它可以正常工作!然而,我需要小程序来运行我在 AI 上工作时需要的各种调试功能

【问题讨论】:

  • 您也可以展示它应该的样子。另外,验证从the event dispatch thread 开始。
  • 它应该是什么样子的:i.imgur.com/gegqt.png -- 游戏加载时这很好。在第一个鼠标事件之后,它会重新绘制到我上面包含的垃圾。游戏可以玩,但由于重绘问题显然很困难。单击网格会生成正确的事件和执行。再次,绘图是唯一搞砸的东西,并且在我重新安装之前这段代码运行良好(之后代码没有任何变化)

标签: java eclipse swing applet


【解决方案1】:

确认您正在event dispatch thread 上构建 GUI。这对于 Swing 小程序也是必需的。

【讨论】:

  • 在 GUI 构建期间每次为 javax.swing.SwingUtilities.isEventDispatchThread() 添加测试都会返回 true。我知道我可能没有为您提供足够的信息来正确解决问题,但我不确定您需要什么相关信息,请提出您的任何问题,我会提供尽可能多的信息。
  • 看来从 5 切换到 6 可能已经暴露了现有的同步问题。不幸的是,isEventDispatchThread() 是必要但非充分条件。您仍然需要寻找在 EDT 上运行的构建后 GUI 方法调用。有没有机会你也换了显卡?各种卡上的不同时间是暴露此类问题的一种方法。
  • 相同的显卡(在笔记本电脑上工作)但在重新格式化期间升级为 SSD
  • 玩弄一些并发项目,看起来好像你是对的。是时候认真研究一下我伙伴的 UI 代码了 :(
  • 不要对你的伴侣太苛刻;此类异常通常是潜伏的,而且是出了名的多变。为坚持不懈而赞叹。
【解决方案2】:

可能是因为您在进行自定义绘画时在某处遗漏了一个 super,paintComponent(g)。

【讨论】:

  • 代码没问题。该应用程序在我重新格式化之前可以 100% 运行,并且在嵌入 html 页面时仍然可以 100% 运行。我在我的环境中看到的唯一区别是我相信在重新格式化之前我在 JRE5 中,现在正在使用 JRE6。
猜你喜欢
  • 2011-08-26
  • 1970-01-01
  • 1970-01-01
  • 2012-03-21
  • 2011-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多