当前位置: 首页 > 面试题库 >

Java Swing:repaint()与作废

伊温书
2023-03-14
问题内容

我正在与我的程序作斗争,以使其在正确的时间刷新。

而且没有很多成功大声笑

我有两个问题

问题1:界面更改后应该使用哪个:重新绘制或无效?

Q2:什么时候应该调用它们?我知道这听起来很愚蠢,但是由于SwingWorker和其他线程操作,我实际上遇到了问题。


问题答案:

问题1:界面更改后应该使用哪个:重新绘制或无效?

如果由于调整大小,更改字体等原因导致布局不是最新的,则应调用invalidate。使组件无效,使该组件无效并且其上方的所有父项均标记为需要布置。在绘制之前,如果在验证步骤中未找到任何更改,则省略绘制步骤。

如果组件的某个部分正在更新(由图形的剪辑矩形定义,称为 “损坏”
区域),则应考虑调用repaint。可能发生损坏区域的原因之一是由于某些其他组件或应用程序而导致的一部分组件重叠。根据我的经验,如果在最里面的封闭组件上调用repaint()会更有效(即使用public void repaint(int x, int y, int width, int height)而不是使用public void repaint())。

Q2:什么时候应该调用它们?

Invalidate(): 将组件标记为无效-
表示其布局是否为“最新”:即调整了组件的大小,添加了边框,更改了字体等。您永远不需要调用invalidate(
),因为每次属性更改时,挥杆动作几乎都能为您带来帮助。

当控件中的多个区域需要重新绘制时,Invalidate将使整个窗口在一次通过中重新绘制,从而避免了由于冗余重新绘制而引起的闪烁。在实际重绘控件之前多次调用Invalidate不会对性能造成任何影响。

Repaint() :如果组件是轻量级组件,则此方法将导致尽快调用此组件的paint方法。否则,此方法将导致尽快调用此组件的update方法。

也有看Update方法。

注意: Swing处理“重绘”请求的方式与AWT稍有不同,尽管应用程序程序员的最终结果基本上是相同的-调用paint()。

有关在AWT和Swing中如何完成绘画的出色链接,请参见下面的链接:

http://www.oracle.com/technetwork/java/painting-140037.html

希望这会有所帮助。



 类似资料:
  • 我在vue的Symfony下配置merure时遇到了问题。在. env文件中,我将mercureurls更改为使用超文本传输协议,因为它导致我的证书错误(包括在symfony中)。 . env 当我通过在示例中打开symfony应用程序http://localhost:8000并在控制台中添加此脚本进行测试时: 它正在工作,我可以在其他选项卡中发布一些更改。但当我在位于上的vue应用程序中执行相同

  • 问题内容: 我是SQL,PDO和PHP的新手,所以我知道很多人在问自己。还是没什么冒险的……我想结合两个查询的结果,并使用别名使UNION查询的列名相同。我尝试了各种减少操作,直到没有减少的余地为止,我的应用程序需要的实际结果还有很多。我有以下代码,无法考虑为什么它不起作用。 这两个查询都是独立工作的,但是当我将它们与UNION结合使用时,我什么也没得到。任何建议将是最有帮助的。 非常感谢您的期待

  • 问题内容: 嗨,我有一个带有三个按钮的自定义UITableViewCell,用于处理购物车功能,加号,减号和删除按钮,我需要知道已触摸哪个单元格。 我已经尝试使用“标签解决方案”,但是由于单元的生命周期,它无法正常工作。 谁能帮我找到解决方案? 提前致谢 问题答案: 我正在使用UITableViewCell的子类中的单元委托方法解决此问题。 快速概述: 1) 创建一个协议 2) 子类化 您的 子类

  • 若指定作图为标记型而非线型,则MATLAB只画出标记,例如: plot(x,y,'ks') 在每个数值点画黑色小正方形,但没有用线连接起来。 而: plot(x,y,'r:+') 画出一条红色的点线,在每个数值点上有标记点(+)。你或许想要用更少的数值点来画标记点,下面我们用两组不同数目的点来分别画点线和标记图。例如: x1 = 0:pi/100:2*pi; x2 = 0:pi/10:2*p

  • 问题内容: 在对此问题的评论中,我看到了一条建议使用的声明 与 我想知道两者之间有什么区别,为什么可能要推荐一个而不是另一个? 问题答案: 是一项 平等测试 。它检查右手侧和左手侧是否相等的对象(根据它们或方法)。 是 身份测试 。它检查右侧和左侧是否是同一对象。没有方法调用完成,对象不能影响操作。 您可以将(和)用于单例,例如,您不关心可能假装为的对象,或者想要与之进行比较时要防止对象破裂的地方

  • 我有一位作曲家。json结构如下: 我有文件在应用程序/数据库/种子(这里的文件可以动态创建,所以解决方案与类地图:[应用程序/数据库/种子]不工作在这里bcs我必须始终转储-自动加载前播种: 用户表种子。php 数据库播种机。php 结构如下: 在php编写器之后。phar安装和php编写器。phar dump autoload我不能在应用程序中使用,例如在索引中。php 因为我收到错误:类Da