问题标签 [repaint]

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 投票
1 回答
397 浏览

java - 使用容器在 Java Swing 中重绘

我有一个简单的网格,可以在用户点击的任何地方放置一个正方形。网格和对窗格的访问保存在“游戏”对象中。

这有效:

这不会触发重绘:

如果我将面板设为 Game 的公共变量,这也不起作用:

“getPanel”只返回顶部的“panel”对象所指的同一个自定义面板对象。

我想将面板包含在游戏对象包装器中。同样,在“购买”函数中调用重绘函数也不起作用。

为什么上述示例中的“重绘”功能表现不同?

0 投票
2 回答
241 浏览

javascript - 更快地操作现有 HTML 或删除 HTML 然后重新创建它?

我正在进行的这个项目,我有一个元素列表并将它们转换为“图形”(不是真正的图形,但您可以将其称为伪图形)。我有我的数据集,我for对数据运行一个循环,然后li为每个元素创建一个元素,创建和父元素ul,附加lis,然后将父元素附加到页面上已经存在的另一个 DOM 元素(我们称之为祖父元素) . 之后,我必须根据用户交互对该列表进行后续更新。
此外,这一切都在使用 jQuery 的上下文中。

现在,我的问题是 - 创建元素一次然后在每次后续调用中更新生成的 HTML 是否更快,或者重新创建每个元素、empty()祖父元素(这将摆脱 parent ul)然后重新添加新元素是否更快创建ul(我现在正在做的)?

请记住,当我重新创建lis 时,它们根本不在 DOM 中,因此在重新创建它们时没有重绘/重排。仅当我重新添加新创建的ul.

我正在和一位同事交谈,他说最好在创建 HTML 元素后更新它们,而不是每次都重新创建它们。我正在考虑走这条路,但后来我认为更新现有li的 s 实际上会导致重新绘制 50 个元素,而不是只做一个大规模的元素,empty()然后重新添加新创建的ul.

想法?

0 投票
1 回答
621 浏览

java - JLabel 在透明绘制的矩形上?

我将 JWindow 的背景设置为完全透明。然后我在它的paint-Method 中绘制了一个圆角矩形(RGB:0,0,0,100),并在JWindows ContentPane 中添加了一个JLabel。但是当我尝试重新绘制 JWindow 以更新 JLabel 时,它不会删除旧的 Rectangle 和 JLabel 的旧值。所以结果是我的自定义工具提示框(它应该是什么)变得不那么透明,并且您无法读取 JLabels 内容,因为它覆盖了旧的内容。

有没有办法解决这个问题?

顺便说一句,如果我不重新绘制,它不会变得不那么透明,但是当我重新绘制时,我的 JLabel 的新内容会覆盖旧内容,就像它一样。

0 投票
3 回答
195 浏览

android - 在 Android 应用上呈现和频繁更改图像的有效方法?

我在一个布局中有几个 imageViews。通常,(5-10 秒)我想要更改一些图像(使用其他来源)。

由于我只是 android 的初学者,因此在能量方面,使用 imageView 对我的目的有意义吗?

有没有更有效的方法来呈现几张会经常变化的图像?

先感谢您!

0 投票
2 回答
271 浏览

java - Java——对于一个动画,一个逻辑类应该如何通知一个松耦合的视图重绘

对于频繁重绘的应用程序,“模型”应如何通知“视图”他们需要重复重绘其​​中一个组件。这:

p>

对面板进行动画处理似乎是一种糟糕的方式,尤其是在程序运行的大部分时间都在重新绘制动画的情况下。有什么建议么?谢谢。

*忽略线程等明显错误

0 投票
3 回答
17802 浏览

java - Java图形重绘问题

在 java 中使用简单的画板时遇到问题。让我的清除按钮重绘的问题。数组正在清除但未重新绘制。任何人都可以发现我的问题,或者是否有任何不同的方法可以为此代码生成清除按钮。

}

0 投票
1 回答
2461 浏览

java - 一个简单的滑块游戏(游戏逻辑和绘制组件方法)

我正在构建一个简单的滑块游戏。我使用 repaint() 方法绘制拼图图像的块,然后借助 BufferedImage 数组 (puzzle[empty_row][empty_col] = null;) 绘制一个空块。空块是您通常在谜题中拥有的空白框。

问题是,我“调用”paint 方法来绘制我的拼图的所有块,而我有一个是空的块。每次用户点击它旁边时,我将empty_row、empty_col更改为鼠标事件的getX()、getY(),以便--move--将空白框移动到所需位置。

什么......在这个难题中让我感到困惑:) 是在我绘制了新的之后,之前的空白框仍然出现。这对你有意义吗?

使用 repaint() 我希望这些块会被重绘,只留下一个空白框。

对此有什么想法吗?这是我在这里的第二篇文章,我看到人们非常愿意提供帮助。对此,我真的非常感激。预先感谢您的回答。

佐伊

我的 SlidingBlockPanel 类中的一些代码:

和 SlidingBlockModel 类:

导入 java.awt.image。; 导入 java.io。; 导入 javax.imageio。; 导入 java.awt.Image。; 导入 java.awt.Graphics.*;

类滑动块模型 {

}

0 投票
3 回答
505 浏览

java - 如何调试 Swing 中发生的不必要的重绘

在我正在开发的 Swing 应用程序中进行重新绘制时,我遇到了一些奇怪的问题。我发现当我设置某个组件的文本(它只是窗口最底部的状态栏文本标签)时,屏幕非常不同区域的整个表格被告知重新绘制。这会导致一些性能问题,因为每次我设置状态栏文本时,基本上整个窗口都被要求重新绘制。

我一直在 RepaintManager 周围徘徊,试图弄清楚发生了什么,并发现当我尝试设置此文本的标签时,我的整个主 JPanel 都被标记为脏组件。但是,我在调试发生的时间点以及发生这种情况的确切原因时遇到了麻烦。我试图阅读重绘系统,但我无法确定为什么在设置其他文本标签时需要对非重叠表进行重绘。

我使用 Swing Explorer 尝试可视化布局边​​框,以确保事物不会以某种疯狂的方式重叠,并且一切看起来都很好。

我正在寻找一种方法来确定要求 JTable 重新绘制的调用顺序。当我在它的paintComponent() 上添加一个断点并沿着堆栈向上走时,我最终进入了RepaintManager 的paintDirtyRegions() 调用,其中我的整个主JPanel(包含窗口中的所有内容)都位于tmpDirtyComponents 变量中。

当我最初只是设置一个状态文本标签时,谁能解释我的整个 JPanel 是如何被标记为脏的?如果没有,您能否提供一些关于在哪里找到错误的指导?

非常感谢您提供的任何帮助!

0 投票
2 回答
1161 浏览

delphi - 当 MDIChild 本身包含诸如 TPanel 之类的容器时,如何重新绘制 MDIChild 表单,其中对齐:= alClient 和 ParentBackground:= False

总结:

请参阅 Andreas 知识渊博的评论!

===========================================

如下代码所示,TForm7为MDIForm窗体,TForm8为MDIChild窗体。TForm8 包含一个 alClient 对齐的面板,该面板还包含一个 TPaintBox。如果 TForm8 的面板的 ParentBackground 设置为 False,我无法从 TForm7 触发 TForm8 的paintbox 的绘制事件。我想知道为什么会发生这种情况,以及如何在不明确引用的情况下触发 TForm8 的paintbox 的绘制事件。任何建议表示赞赏!

注意:如果我Self.Repaint在 TForm8 内部调用,例如在它的 Click 事件中,可以触发 TForm8 的paintbox 的绘制事件。form8.repaint只有当我在 TForm8 外部调用时才能触发它。我想知道为什么会发生这种情况?

可能相关的 SO 页面:
如何在模式表单处于活动状态时重新绘制父表单?

包含 MDIForm 表单的单元。

上述单位的 Dfm。

包含 MDIChild 表单的单元。

上述单位的 Dfm。

0 投票
1 回答
442 浏览

performance - JDialog处理和重绘问题

在 jnlp 应用程序中,我们创建了一个从 javax.swing.JDialog 扩展的模式弹出窗口,并在必要时调用 dispose() 来隐藏对话框。但是,有时最终客户会遇到重绘问题。对话框并没有真正消失,它的父窗口看起来很乱。我无法重现,但它在最终客户端 PC 上发生了很多次。我想有两个可能的原因:

  • 我们的应用程序中有一个线程直接更新游标。但是,我无法证明这个线程是问题的根本原因。
  • 周期性地,我们有另一个进程在几秒钟内高度使用 CPU。我试图加载 CPU,但我也无法重现该问题。

在这种情况下对我有什么建议吗?

谢谢!