摆脱SWT中的闪烁

时间:2013-05-24 09:26:06

标签: java swt progress-bar double-buffering

我们使用以下类在Java应用程序中显示进度条:TextProgressBar

不幸的是,在使用它时,我们遇到了一些闪烁问题(Win 7,Java 7)。你有什么提示我们如何避免这种情况吗?我们可以以某种方式重新粉刷它,使用双缓冲或其他什么?非常感谢任何提示!

4 个答案:

答案 0 :(得分:5)

首先,尝试将SWT.DOUBLE_BUFFERED传递给构造中的样式参数。如果这无法改善这种情况,请向上移动父链并将SWT.DOUBLE_BUFFERED添加到其构造函数调用中。

如果您无法控制父级,那么您可能需要将控件包装在另一个启用了此标志的Composite中。

答案 1 :(得分:1)

首先尝试SWT.NO_BACKGROUND,如果不使用SWT.DOUBLE_BUFFERED。 不要同时使用两者,因为没有意义。 请参阅discussion

答案 2 :(得分:1)

免责声明:我知道这个问题具体涉及TextProgressBar。但是,我相信此问题的许多观点不仅限于此小部件。

我遇到了Text窗口小部件闪烁的问题,我无法使用SWT.DOUBLE_BUFFERED样式解析,也无法使用Composite解压缩,也无法应用他们的任何组合。

最后,我只需将小部件类型从Text更改为StyledText即可解决此问题。即使没有SWT.DOUBLE_BUFFERED样式且没有Composite包装,也没有闪烁。

希望这会有助于被这个问题的广泛标题所吸引的人。

答案 3 :(得分:-3)

您可以尝试使用 thread.sleep()延迟时间。当我使用 jTables

时遇到同样的问题时,它对我有用