1

我在使用 Swing 组件时遇到了一些麻烦。

在一个JFrame中,我有 aGLCanvas和 aJEditorPane由 a 隔开JSplitPane。此配置使两个面板中的显示响应不连贯。

但是,当我将GLCanvasand JEditorPaneeach 放在它们自己的JFrame中时,显示响应非常好。

我认为这是因为在第二种情况下,对这些组件的所有操作都是在单独的线程中执行的。如果是这样,我的问题如下:

是否可以在自己的线程中运行组件?还是有更好的方法我应该这样做?

感谢您的任何帮助,您可以提供。

4

3 回答 3

4

我怀疑第一种情况下的性能不佳与混合重型和轻型组件有关。与大多数图形 API 一样,Swing 使用单个事件调度线程来更新屏幕。我猜想 JOGL 必须遵守同样的限制。同时,还有很多方法可以在另一个线程中执行工作并与图形环境进行通信。

于 2010-07-16T02:39:54.553 回答
1

看起来@trashgod 是对的。GLCanvas是 awt 的“重量级”组件Canvas。为了看看这是否真的是一个案例,我建议替换GLCanvasGLJPanel,它是 Swing 组件的后代JPanel

于 2010-07-16T13:19:09.933 回答
1

我认为你的假设是不正确的。所有 Swing 绘制操作都发生在同一个线程上。

也许您可以扩展您对“断断续续”的描述?也许这是双缓冲与非双缓冲的问题?

于 2010-07-16T02:38:31.453 回答