问题标签 [repaintmanager]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2160 浏览

java - 如何从 RepaintManager 生成异常

关于我的问题可能是),我发现了另一种我无法从SwingWorker线程中捕获和打印的异常类型。

如何生成RepaintManager异常?

我通过 阅读了这个CheckThreadViolationRepaintManager这个方法Alexander Potochkin但似乎没有什么能解决我的问题。

0 投票
1 回答
198 浏览

java - RepaintManager 为组件的损坏区域设置动画?

我正在寻找一个我记得看过但不记得名字的现有课程。

它为 RepaintManager 用来更新 JComponents 的脏绘制区域设置动画。

我认为这是通过扩展 RepaintManager 来完成的。

0 投票
0 回答
286 浏览

java - Java RepaintManager 和 JFileChooser

我正在使用 Java 编写模拟软件。我有一个框架,我在其中使用双缓冲进行绘制。以下是我在构造函数中的操作方式:

我想创建一个 JFileChooser:

文件选择器弹出,但我无法对其执行任何操作。当我尝试在构造函数中的 repaintManager 之前创建一个随机 JFileChooser 时,选择器按预期运行而没有问题。重绘管理器对文件选择器有什么影响?我该如何解决?提前致谢!!!

0 投票
2 回答
1493 浏览

java - 如何在摇摆中找到异常

我对 java swing 有疑问。我有时会在随机时间得到这个 NullPointerException(也许在某些绘画方法?):(该项目有超过 100 个类,所以在这里发布代码没有意义,此外我对找到这种 excp 的正确方法感兴趣。这不在我的源代码中)

javax.swing.plaf.basic.BasicTextUI$RootView.paint(Unknown Source) at javax.swing.plaf.basic.BasicTextUI.paintSafely(Unknown Source) 的线程“AWT-EventQueue-0”java.lang.NullPointerException 中的异常javax.swing.plaf.basic.BasicTextUI.paint(Unknown Source) at javax.swing.plaf.basic.BasicTextUI.update(Unknown Source) at javax.swing.JComponent.paintComponent(Unknown Source) at javax.swing.JComponent。在 javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source) 在 javax.swing.RepaintManager$PaintManager.paint(Unknown Source) 在 javax.swing.在 javax.swing.JComponent._paintImmediately(Unknown Source) 在 javax.swing.JComponent 的 RepaintManager.paint(Unknown Source)。在 javax.swing.RepaintManager.paintDirtyRegions(Unknown Source) 在 javax.swing.RepaintManager.seqPaintDirtyRegions(Unknown Source) 在 javax.swing.RepaintManager.paintDirtyRegions(Unknown Source) at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source) 在 javax.swing.SystemEventQueueUtilities$ComponentWorkRequest。在 java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$000(Unknown Source) at java.awt.EventQueue at java.awt.event.InvocationEvent.dispatch(Unknown Source) run(Unknown Source) $1.run(Unknown Source) at java.awt.EventQueue$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) at java.awt。 java.awt 中的 EventQueue.dispatchEvent(Unknown Source)。EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread。 java.awt.EventDispatchThread.run(未知源)上的 pumpEvents(未知源)

现在我的问题是,我应该如何/从哪里开始搜索?我不知道为什么这个 excp。出现。例外。随机出现,这也使定位变得更加困难。

那么,有人知道从哪里开始(或者可能不是我自己造成的挥杆问题)?

0 投票
2 回答
939 浏览

java - 如何使用剪辑来减少绘画时间?

我正在尝试使用剪辑来减少 CPU 负载。

但剪辑在屏幕上留下了一些我似乎无法摆脱的垃圾。此外,打开和关闭剪辑似乎对 cpu 负载没有影响。

在任一情况下。大部分时间似乎都花在了重绘管理器和绘制缓冲图像上。

谢谢

0 投票
3 回答
10910 浏览

java - 为什么 repaint() 不会总是调用 paintComponent 以及为什么它在被调用时并不总是正常运行

我正在用 Java 编写俄罗斯方块克隆,一切似乎都可以正常工作,直到我想要清除一整行并删除上面的所有内容。尽管我的所有数据都正确地表示了转换,但我的 paintComponent 方法似乎只清除了该行,但上面显示的所有内容都与 repaint() 调用之前一样。新碎片将穿过幻影块并落在底行的隐形块上,上面的碎片会掉下来。

这是我的油漆组件方法:

这是我的 Timer 侦听器中的 actionPerformed 方法的一部分,它检测/清除块并调用重绘方法。

在调用第一个 repaint() 方法时,井数组正确显示整行现在完全为空。我希望 repaint() 方法更新面板以显示此空行,但似乎没有调用 paintComponent()。这也是第二个 repaint() 方法的情况,我希望它更新框架以在清除一行并将它们放下后将块显示在新位置。同样,paintComponent() 没有被调用。然而,对于最后一次 repaint() 调用,我只想更新下落块的位置,而不管它之前可能需要或不需要进行的任何更新,repaint() 确实调用了 paintComponent()。所以:第一个问题是,为什么 paintComponent() 只在 repaint() 调用的这个实例中被调用。

但是,当调用paintComponent() 并到达该方法的末尾时,我会在调试模式下跟踪它以查看面板在哪一行反映了更改。一旦到达 :"Repaintmanager.paintDirtyRegions(Map< Component,Rectangle >)" line:856,它已经清除了行并显示了新的落块,但是有不可见的块和幻像块。

所以,我的第二个问题是,为什么 paintComponent() 会以这种方式表现。显然,我需要对 Repaintmanager 和 Java 绘画进行大量阅读,但如果有人可以向我解释这一点,我将不胜感激。

如果重要,这是主要方法:

}

如果这太长了,我很抱歉。

0 投票
0 回答
419 浏览

java - 在 repaint() 之后删除 JPanel 时,对 JPanel 的绘制会中断;

我正在尝试为我正在编码的应用程序创建一个 2D 渲染器。
我正在使用paintComponent 将所有图像绘制到JPanel,并且很好。事情出了问题。

首先,我使用了这个:

这工作得很好,除了框架会因 JPanel 过载。

当我将其用作我的代码时,一切都运行良好:

这非常适合我的需要。除了我不希望控制台被内容窗格上的内容发送垃圾邮件。

所以我决定删除 list 方法并这样做:

那是它变坏的时候。

这是我得到的错误。

有人对如何修复有任何建议吗?

0 投票
2 回答
702 浏览

java - Java7u40 中的 javax.swing.Timer 减速

同时调用 javax.swing.Timer#start(),

7u25没问题。

在此处输入图像描述在此处输入图像描述

但是7u40是个大问题。

在此处输入图像描述在此处输入图像描述

太滞后调用 ActionListener#actionPerformed。(基本上同时调用u25)

u25 和 u40 之间的移动完全不同。(我使用 Windows 8)我报告了错误但仍然没有添加错误跟踪系统。甲骨文粉碎摇摆应用程序?

0 投票
0 回答
63 浏览

java - 如何放大 RepaintManager 设置的 Swing Graphics2D 的剪辑

我被 Swing 重绘管理困住了。我想模糊组件的背景。我使用 BufferedImage 来捕捉和模糊我的组件所覆盖的内容。在paintComponent() 上,我将模糊图像绘制为背景。

如果组件被完全重新绘制,一切正常,但我无法克服以下场景中的问题:

  • 一个组件被我的组件覆盖但不完全重叠
  • 在执行重绘之前,RepaintManager 会设置一个剪辑(覆盖被遮挡组件的子区域),以限制对图形对象的更改
  • 设置/清除用户剪辑始终与此剪辑区域相交
  • 创建新图形对象始终是副本或与此剪辑区域相交
  • 因为我要绘制的图像是模糊的,所以我必须在 RepaintManager 设置的剪辑之外绘制像素

无论 RepaintManager 设置的剪辑如何,如何确保组件可以在 paintComponent() 上绘制其所有像素?

非常感谢您的帮助。

提前感谢您的帮助。

0 投票
1 回答
302 浏览

java - Java 动画和重绘管理器

只是希望人们可以帮助我正确理解 RepaintManager 在尝试创建动画时是如何工作的。基本上我正在创建一个将生物/图像绘制和更新到 JFrame 的程序。每个生物对象都包含用于绘制它的所有信息,例如 x,y 坐标和 BufferedImage。目前,每次生物对象移动时,它都会调用 repaint(),正如您将在下面的我的paint/paintComponent(不确定哪个是最好的)方法中看到的那样,它将在所有现有生物中运行一个循环并更新它们在屏幕上的位置和图形.

所以我的查询,这是最好的方法,因为我担心 RepaintManager 正在重绘屏幕上的所有内容,这不是很有效。我阅读了一些关于剪辑或覆盖更新方法的帖子/文章,但我无法完全理解它们 - 所以每次调用 repaint 时它是否可能只更新已更改的对象/生物?

我正在谈论的一些代码:

绘制方法中的所有图形都不会改变,也不需要重新绘制,但是下面的方法将......

}

重要的部分是增强 for 循环的第一行,因为它将图像绘制到 JFrame 窗口。createImage 方法只是获取生物图像并转换/修改,例如当它们在绘制使用它之前向左移动时翻转它。

动画目前由每个运行线程的生物处理,但是我也想知道 Swing Timer 是否会更好,因为当一个生物尝试将新生物添加到 crlist 时,我目前正在收到 ConcurrentModificationException。

因此,每个生物移动和重绘每 1 秒就会被调用一次,但我想要一种方法,要么不必循环遍历绘制中的每个生物,要么确保在调用重绘时它只更新调用它的生物。

任何建议或只是将我指向另一个帖子将不胜感激。谢谢。