2

Java3D と Jmol (3D の化学構造のビューアー) を使用するプロジェクトに取り組んでいます。構造の Java3D 表現と Jmol 表現を切り替えることができるビューを作成する必要があります。

私はそれを行うことができましたが、JPanels を JmolPanel と Canvas3D でスワップすると、スワップされた領域が点滅します。

次のようにして、パネルを交換しています。

public static void changeView(JPanel c) {
     c.removeAll();
    if (var) {
        c.add(canvas);
    } else {
        c.add(jmolPanel);
    }
    c.revalidate();
    var = !var;
}

パネルを交換するボタン付きのフレームを作成するコードの例は、http: //pastebin.com/3F2gKBgbにあります。

この例を実行するには、Jmol.jar (http://jmol.sourceforge.net/download/ にあります)と Java3D (http://java3d.java.net/binary-builds.html)が必要です。

JPanels でダブルバッファリングを設定してみましたが、うまくいきません。点滅の問題を解決する方法を知っていますか?

4

1 に答える 1

0

サブパネルを削除してから追加している間に点滅が再描画されていることを意味する場合は、再描画を停止し、すべての交換を行ってから、親パネルの再描画を有効にします。

意志が助けになるかもしれ c.setVisible(false); <your swapping code>; c.setVisible(true); ませんか?

または、親パネルが常に表示されたままになるように、スワップ可能なコンポーネントを追加する非表示にするサブパネル sc を作成します。そもそも問題を解決するはずだったダブルバッファリングの問題を回避するハックかもしれませんが、試してみる価値があります。

于 2012-11-29T17:58:04.973 に答える