問題タブ [repaint]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
397 参照

java - コンテナーを使用した Java Swing での再描画

ユーザーがクリックした場所に正方形を配置する単純なグリッドがあります。グリッドとペインへのアクセスは、「ゲーム」オブジェクトに保持されます。

これは機能します:

これは再描画をトリガーしません:

パネルをゲームのパブリック変数にすると、これも機能しません。

「getPanel」は、上部の「パネル」オブジェクトが参照している同じカスタム パネル オブジェクトを返すだけです。

パネルを Game オブジェクト ラッパーに含めたいと思います。同様に、「購入」関数内で再描画関数を呼び出しても機能しません。

上記の例で「再描画」機能の動作が異なるのはなぜですか?

0 投票する
2 に答える
241 参照

javascript - 既存の HTML を操作するか、HTML を削除してから再作成する方が速いですか?

私が取り組んでいるこのプロジェクトでは、要素のリストがあり、それらを「グラフ」に変換します(真のグラフではありませんが、疑似グラフと呼ぶことができます)。私は自分のデータセットを持っています。データに対してforループを実行しli、それぞれの要素を作成し、 create と parent を作成しullis を追加してから、既にページにある別の DOM 要素 (祖父母と呼びます) に親を追加します。 . その後、ユーザーの操作に基づいてそのリストを更新する必要があります。
また、これはすべて jQuery を使用するコンテキストにあります。

さて、私の質問は、要素を一度作成してから、後続の各呼び出しで結果の HTML を更新する方が速いですか、それとも、各要素、empty()祖父母要素 (親を取り除くul) を再作成してから、新しく再追加する方が速いですか?作成されましたulか(私は今やっています)?

s を再作成するときli、それらは DOM にまったくないため、再作成中に再描画/リフローが発生しないことに注意してください。再描画は、新しく作成した を再追加したときにのみ発生しulます。

同僚と話したところ、HTML 要素を毎回再作成するよりも、一度作成したら更新する方がよいとのことでした。私はこのルートに行くことを考えていましたが、既存liの を更新すると、実際にはたとえば 50 個の要素が再描画されempty()、新しく作成されulた .

考え?

0 投票する
1 に答える
621 参照

java - 透明な塗装された長方形の上にJLabel?

JWindow の背景を完全に透明に設定しました。次に、ペイント メソッドで角丸長方形 (RGB: 0,0,0,100) をペイントし、JWindows ContentPane に JLabel を追加しました。しかし、JWindow を再描画して JLabel を更新しようとすると、古い Rectangle と JLabel の古い値が削除されません。その結果、カスタム ツールチップ ボックス (あるべき姿) の透明性が低下し、JLabels の内容を読み取ることができなくなります。これは、古い内容をオーバーレイするためです。

この問題を解決する方法はありますか?

ところで、再描画しなくても透明度が低下することはありませんが、再描画すると、JLabel の新しいコンテンツが古いコンテンツにオーバーレイされます。

0 投票する
3 に答える
195 参照

android - Androidアプリで画像を表示し、頻繁に変更する効率的な方法は?

レイアウトにいくつかの imageViews があります。頻繁に (5 ~ 10 秒) いくつかの画像を変更したい (別のソースを使用)。

私はアンドロイドの初心者にすぎないので、エネルギー的には imageView を使用することは私の目的にとって意味がありますか?

頻繁に変化する複数の画像を表示するための、より効率的な方法はありますか?

前もって感謝します!

0 投票する
2 に答える
271 参照

java - Java -- アニメーションの場合、ロジック クラスは疎結合ビューに再描画を通知する方法

頻繁に再描画するアプリケーションの場合、「モデル」は、コンポーネントの 1 つを繰り返し再描画する必要があることを「ビュー」にどのように通知する必要がありますか。これ:

p>

特に、プログラムが実行されているほとんどの時間でアニメーションが再描画されている場合は、パネルをアニメーション化するのはひどい方法のように思えます。助言がありますか?ありがとう。

*スレッドなどの明らかなエラーは無視してください

0 投票する
3 に答える
17802 参照

java - Java グラフィックの再描画の問題

Java の単純なペイント パッドに問題があります。クリア ボタンを再描画する際の問題。配列はクリアされていますが、再描画されていません。誰でも私の問題を見つけることができますか、またはこのコードのクリアボタンを生成する別の方法はありますか?

}

0 投票する
1 に答える
2461 参照

java - シンプルなスライディングブロックゲーム(ゲームロジックとペイントコンポーネントメソッド)

シンプルなスライディングブロックゲームを作っています。repaint()メソッドを使用してパズル画像のブロックを描画してから、BufferedImage配列(puzzle [empty_row] [empty_col] = null;)を使用してnullブロックを描画します。ヌルブロックは、パズルで通常使用する空白のボックスです。

問題は、ペイントメソッドを「呼び出し」てパズルのすべてのブロックを描画し、1つのブロックが空になっていることです。ユーザーがその横をクリックするたびに、empty_row、empty_colをマウスイベントのgetX()、getY()に変更して、空白のボックスを目的の位置に移動します。

このパズルで私を困惑させるのは...新しいものを描いた後も以前の空白のボックスがまだ表示されていることです。それはあなたにとって意味がありますか?

repaint()を使用すると、ブロックが再描画され、空白のボックスが1つだけ残ることが期待されます。

それについて何か考えはありますか?これは私の2回目の投稿であり、人々は非常に喜んで助けてくれると思います。ほんとうにありがとう。よろしくお願いします。

ゾイ

SlidingBlockPanelクラスのコードの一部:

およびSlidingBlockModelクラス:

java.awt.imageをインポートします。; java.ioをインポートします。; javax.imageioをインポートします。; java.awt.Imageをインポートします。; importjava.awt.Graphics。*;

クラスSlidingBlockModel{

}

0 投票する
3 に答える
505 参照

java - Swing 内で発生する不要な再描画をデバッグする方法

開発中の Swing アプリで再描画を行うと、奇妙な問題が発生します。特定のコンポーネントのテキスト (ウィンドウの一番下にあるステータス バーのテキスト ラベル) を設定すると、画面の非常に異なる領域にあるテーブル全体が再描画されるように指示されていることがわかりました。基本的にステータスバーのテキストを設定するたびにウィンドウ全体を再描画するように求められているように見えるため、パフォーマンスの問題が発生しています。

何が起こっているのかを把握しようとして RepaintManager をさまよい、このテキストのラベルを設定しようとすると、メインの JPanel 全体がダーティ コンポーネントとしてマークされていることがわかりました。ただし、どの時点でそれが発生しているのか、正確にはなぜそれが発生しているのかをデバッグするのに問題があります。再描画システムについて調べてみましたが、他のテキスト ラベルが設定されているときに重複しないテーブルを再描画する必要がある理由がわかりません。

Swing Explorer を使用して、レイアウトの境界線を視覚化して、異常な方法でオーバーラップしていないことを確認しました。すべて問題ないように見えます。

JTable に再描画を要求している一連の呼び出しを特定する方法を探しています。paintComponent() にブレークポイントを追加してスタックをたどると、RepaintManager の paintDirtyRegions() 呼び出しの内部に行き着き、メインの JPanel 全体 (ウィンドウ内のすべてを含む) が tmpDirtyComponents 変数内に置かれます。

最初に単一のステータステキストラベルを設定しただけで、JPanel全体がダーティとしてマークされる方法を誰か説明できますか? そうでない場合は、エラーを見つけるためにどこにフックするかについて、いくつかのガイダンスを提供していただけますか?

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

0 投票する
2 に答える
1161 参照

delphi - MDIChild自体にTPanelなどのコンテナーが含まれている場合にMDIChildフォームを再描画する方法:= alClientおよびParentBackground:= False

要約:

アンドレアスの知識豊富なコメントをご覧ください!

==========================================

次のコードに示すように、TForm7はMDIFormフォーム、TForm8はMDIChildフォームです。TForm8には、alClientに整列されたパネルが含まれ、さらにTPaintBoxが含まれます。TForm8のパネルのParentBackgroundがFalseに設定されている場合、TForm7からTForm8のペイントボックスのペイントイベントをトリガーできません。なぜこれが発生するのか、明示的に参照せずにTForm8のペイントボックスのペイントイベントをトリガーするにはどうすればよいのでしょうか。どんな提案でも大歓迎です!

注:Self.RepaintたとえばClickイベント内などでTForm8内を呼び出すと、TForm8のペイントボックスのペイントイベントがトリガーされる可能性があります。form8.repaintTForm8の外部を呼び出した場合にのみトリガーできません。なぜこれが起こるのだろうか?

関連する可能性のあるSOページ:
モーダルフォームがアクティブなときに親フォームを再描画するにはどうすればよいですか?

MDIFormフォームを含むユニット。

上記ユニットのDfm。

MDIChildフォームを含むユニット。

上記ユニットのDfm。

0 投票する
1 に答える
442 参照

performance - JDialogの破棄と再描画の問題

jnlp アプリケーションでは、javax.swing.JDialog から拡張されたモーダル ポップアップを作成し、dispose() を呼び出して、必要に応じてダイアログを非表示にします。ただし、最終クライアントで再描画の問題が発生することがあります。ダイアログは実際には消えず、その親ウィンドウは乱雑に見えます。再現できませんでしたが、最終的なクライアント PC で何度も発生します。考えられる理由は 2 つあります。

  • アプリケーションには、カーソルを直接更新するスレッドがあります。ただし、このスレッドが問題の根本原因であることを証明することはできません。
  • 定期的に、数秒間で別のプロセスが CPU を大量に使用します。CPU をロードしようとしましたが、問題も再現できませんでした。

この場合、何かアドバイスはありますか?

ありがとう!