Java SWT PaintEvent来自何处以及如何影响它

Java SWT PaintEvent来自何处以及如何影响它,java,eclipse,swt,Java,Eclipse,Swt,我正在尝试使用PaintListeners使用SWT绘制和设置动画。我想影响动画的时间安排,所以我已经看了很多遍,但找不到任何解释PaintEvents在何处以及如何生成以及如何影响它的内容,例如强制帧率或仅将PaintEvent发送给cetrain小部件 那么,如何做到这一点呢?那么,到底应该这样做吗在这个主题上找不到任何东西表明可能有更好的方法。每次需要时,SWT都会为您生成PaintEvents。例如,第一次显示小部件时,或由于窗口已移动,小部件再次可见后 可以使用以下命令强制控件上发生绘

我正在尝试使用
PaintListeners
使用SWT绘制和设置动画。我想影响动画的时间安排,所以我已经看了很多遍,但找不到任何解释
PaintEvents
在何处以及如何生成以及如何影响它的内容,例如强制帧率或仅将PaintEvent发送给cetrain小部件


那么,如何做到这一点呢?那么,到底应该这样做吗在这个主题上找不到任何东西表明可能有更好的方法。

每次需要时,SWT都会为您生成PaintEvents。例如,第一次显示小部件时,或由于窗口已移动,小部件再次可见后

可以使用以下命令强制控件上发生绘制事件:

control.redraw();
control.update();

请参见此处:()

谢谢,我知道'redraw()'和'update()'方法。如果我正确理解API,第一个API只是在下一个pain请求到来时标记wiget以进行处理,第二个API强制处理所有未完成的请求。它们都不会影响请求的生成。所以,这并不能回答我的问题。也许您可以详细说明您的第一部分“由SWT生成”和“每次需要时”。SWT的哪一部分?那么需求是如何确定的呢?@kostja我认为SWT并不是真的自己生成这些绘画事件,而是依赖于底层的窗口系统(motif、gtk或Windows)。为什么重画/更新不符合您的需要?我想在不同的系统中实现一致的帧速率,所以我认为一个好主意是掌握PaintEvent生成并使用timerExec()或类似工具控制它。也许有更好的方法吗?只需使用redraw()和update()即可。在小部件上创建一个调用redraw()和update()的timeExec,这将为您生成一个绘制事件。使用此解决方案,我仍然不理解您的问题。