0

Java3D を使用して 3d モデルのプレビューを表示する GUI に取り組んでいます。複数のプレビューを読み込んでそれらを切り替えることができるように、各タブが Canvas3D である JTabbedPane があります。タブを削除する機能を追加するまで、これはうまく機能していました。タブが削除されると、ほとんどの場合、残りのタブは 3D モデルのレンダリングを停止しますが、意図したとおりに機能し続けることはめったにありません。タブがいつ機能し続け、いつ機能しなくなるかを判断できる明確な条件はありません。ただし、新しいプレビューをロードすると、他のすべてのタブが元に戻ります.

私が試したこと:

  • JTabbedPane で検証を呼び出す
  • JTabbedPane で無効化を呼び出してから検証する
  • 現在選択されている新しい Canvas3D タブで無効化/検証を呼び出す
  • Canvas3D、JTabbedPane などで repaint() を呼び出す。
  • Canvas3D にアタッチされた View オブジェクトで stopView() startView() を呼び出す

isViewRunning() を呼び出すと、そうではないように見えても true が返されるため、この問題の完全に間違った場所を探している可能性があります。これについての考えは非常に高く評価されます。

4

1 に答える 1

1

Canvas3D タブは、6u33 または 7u5 (Win 7 64) でアプリケーションを実行しているときに正しくレンダリングされます。「以前」では、回避策のヒントに従って、タブが削除されたときに JTabbedPane の ChangeListener の最上位コンポーネント (通常は JFrame) で検証を呼び出しました。

于 2012-07-05T06:47:08.573 に答える