質問

私は呼び出し塗り替えのバスなどで何らかの理由によりリスナーが、今回は塗装機能のみの再描画が必要です。私は生バンチの再ペイントでハマりもマウス動作リスナー.

があるので、すべてキャンセル申請中の再ペイント一ょにいかがですか?ん無料でご利用いただけを無視して再ペイントは有効とした時のようにサイズ変更フレームまたは修復するのかを.

なのはなぜかに○をつけてください。私の塗装でコードが非常に重やまだひさしをはじめとする完全な再ペイントが高いFP.

役に立ちましたか?

解決

スイングはあなたのために再描画を結合します:AWTに」絵画を参照してくださいSunのウェブサイトで「にスイング。あなたが矢継ぎ早に再描画の回数をスケジュールする場合、彼らは)(paintImmediatelyへの単一の呼び出しにまとめますよ。

他のヒント

頻繁に再描画要求が自動的に1にまとめています。これを最適化するための最良の方法は、全体を再描画することではなく、特定の領域の座標に再描画を呼び出します。これは、あなたが実際に変更された領域のみを再描画を意味します。

私の理解では、この repaint() 単に時の再描画を追加する地域のコンポーネントの塗り替えます。場合に塗り替えていない場合、コンポーネントを塗り替え新しい地域だったように感じたので同じunioned先に求めた。を塗り替えは実際に実行されるまで他のすべてのイベントのイベントキューに対応しています。なるほど、追加の再ペイントなんでみたいという気持ちになりの差、すなわち塗装のコードでのみ実行されます。見 JComponent.repaintRepaintManager.addDirtyregion.

ハッキング のようなものを向上させるために一緒にどのようJFreechart決塗装を行う場合には多くの話を塗り替える.

基本的に私は、以下の

  • の作成 ScheduledExecutorService 分野としてのクラス
  • 受初のリペイントの要請と submit このexecutorの米国東部時間にも入光時50msに戻り、将来
  • を受けが苦手な方はブラウザバックお借-試合前回のリペイントは終了しました(fut.isDone() 小さなスケジュールを次塗り替え;他には何も行いません。

このように必要な最大20repaint請求ります。

もちろん、類似のもののためのバッチの電話 fireDataTableChanged 時に多くの変更庭でも同時に行います。

いう言葉は通じない。ることができます。repaintみの一部です。を行うカスタム塗装例"太陽のサイトより、有用例を示すかを描くドラッグ矩形がその塗り替える時にマウスが移動します。

ここで、該当セクションのコー---

public void mouseDragged(MouseEvent e) {
            updateSize(e);
        }

        public void mouseReleased(MouseEvent e) {
            updateSize(e);
        }

        /* 
         * Update the size of the current rectangle
         * and call repaint.  Because currentRect
         * always has the same origin, translate it
         * if the width or height is negative.
         * 
         * For efficiency (though
         * that isn't an issue for this program),
         * specify the painting region using arguments
         * to the repaint() call.
         * 
         */
        void updateSize(MouseEvent e) {
            int x = e.getX();
            int y = e.getY();
            currentRect.setSize(x - currentRect.x,
                                y - currentRect.y);
            updateDrawableRect(getWidth(), getHeight());
            Rectangle totalRepaint = rectToDraw.union(previousRectDrawn);
            repaint(totalRepaint.x, totalRepaint.y,
                    totalRepaint.width, totalRepaint.height);
        }

このコードは著作権の対象とな参照 こちらのフルコードおよび著作権)

ここにさえ物件

真実するように告げられ、同様の問題FPSができるようになり、現在の悪いコード!残念では、過去数ヶ月のうすることができるので私のコードでより効率的です。思いを乗り越えながらFPSされる際に問題が起きた場合、2つ以上の"人"を遅く私のグラフィック!Hummmm...ってのみ実施上記のコードを同一のセクションマーコード、その他もぜひぜひ試してみてください!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top