1

Swing コンポーネントに少し問題があります。

1JFrameつには、 aGLCanvasと aがあり、 a でJEditorPane区切られていJSplitPaneます。この構成により、両方のパネルでディスプレイの応答が不安定になります。

しかし、と をそれぞれ独自のに配置するGLCanvasと、表示の応答は良好です。JEditorPaneJFrame

これは、2 番目のケースでは、これらのコンポーネントに対するすべての操作が別々のスレッドで実行されるためだと思います。もしそうなら、私の質問は次のとおりです。

コンポーネントを独自のスレッドで実行することは可能ですか? または、これを行うべきより良い方法はありますか?

ご協力いただきありがとうございます。

4

3 に答える 3

4

最初のケースでのパフォーマンスの低下は、重いコンポーネントと軽いコンポーネントの混合に関係しているのではないかと思います。ほとんどのグラフィックAPIと同様に、Swingは単一のイベントディスパッチスレッドを使用して画面を更新します。JOGLも同じ制限を守らなければならないと思います。同時に、別のスレッドで作業を実行し、グラフィックス環境と通信する方法はたくさんあります。

于 2010-07-16T02:39:54.553 に答える
1

あなたの仮定は間違っていると思います。すべてのSwing描画操作は、同じスレッドで発生します。

おそらく、「途切れ途切れ」の説明を拡張できますか?たぶん、これはダブルバッファリングと非ダブルバッファリングの問題ですか?

于 2010-07-16T02:38:31.453 に答える
1

@trashgod が正しいようです。GLCanvasawt から派生した「重い」コンポーネントCanvasです。本当にそうであるかどうかを確認するには、 の Swing コンポーネントの子孫である に置き換えることをお勧めGLCanvasGLJPanelJPanelします。

于 2010-07-16T13:19:09.933 に答える