問題タブ [repaintmanager]

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 投票する
2 に答える
2160 参照

java - RepaintManager から例外を生成する方法

私の質問(かもしれません) に関連して、キャッチしてSwingWorkerスレッドから出力できない別の例外タイプを見つけました。

RepaintManager例外を生成するにはどうすればよいですか?

CheckThreadViolationRepaintManager私はこれとこのアプローチをで読みましAlexander Potochkinたが、私の問題を解決するものは何もないようです。

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

java - コンポーネントの損傷した領域をアニメーション化する RepaintManager?

見たことを覚えている既存のクラスを探していますが、名前を思い出せません。

RepaintManager が JComponents を更新するために使用するダーティ ペイント領域をアニメーション化しました。

RepaintManager を拡張することで行われたと思います。

0 投票する
0 に答える
286 参照

java - Java RepaintManager と JFileChooser

Javaを使用してシミュレーションソフトウェアをプログラミングしています。ダブルバッファリングでペイントするフレームがあります。以下は、コンストラクターでそれを行う方法です。

JFileChooser を作成したい:

ファイル チューザーがポップアップしますが、何も実行できません。コンストラクターで repaintManager の直前にランダムな JFileChooser を作成しようとすると、チューザーは問題なく期待どおりに機能します。filechooser に対する repaint manager の効果は何ですか? どうすれば修正できますか?前もって感謝します!!!

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

java - スイングで例外を見つける方法

Javaスイングに問題があります。私は時々このNullPointerExceptionをランダムな時間に取得します(おそらくいくつかのペイント方法で?):(プロジェクトには10​​0を超えるクラスがあるため、ここにコードを投稿しても意味がありません。さらに、この種のexcpを見つけるための正しいアプローチに興味があります.それは私のソースコードにはありません)

スレッド「AWT-EventQueue-0」での例外javax.swing.plaf.basic.BasicTextUI.paint(不明なソース) javax.swing.plaf.basic.BasicTextUI.update(不明なソース)でjavax.swing.JComponent.paintComponent(不明なソース)でjavax.swing.JComponent. javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(不明なソース) の javax.swing.JComponent.paintToOffscreen(不明なソース) の javax.swing.RepaintManager$PaintManager.paint(不明なソース) の javax.swing.swing でのペイント(不明なソース)。 javax.swing.JComponent の RepaintManager.paint(不明なソース)。javax.swing.JComponent の_paintImmediately(不明なソース)。javax.swing.RepaintManager.paintDirtyRegions の paintImmediately(不明なソース) javax.swing.RepaintManager.paintDirtyRegions の(不明なソース) javax.swing.RepaintManager.seqPaintDirtyRegions の(不明なソース) javax.swing.SystemEventQueueUtilities$ComponentWorkRequest の。 java.awt.event.InvocationEvent.dispatch で実行 (不明なソース) java.awt.EventQueue.dispatchEventImpl (不明なソース) java.awt.EventQueue.access$000 で (不明なソース) java.awt.EventQueue でjava.awt.EventQueue で $1.run(未知のソース) $1.run(未知のソース) java.security.AccessController.doPrivileged(ネイティブ メソッド) で java.security.AccessControlContext$1.doIntersectionPrivilege(未知のソース) で java.awt. java.awt の EventQueue.dispatchEvent(不明なソース)。java.awt.EventDispatchThread.pumpEventsForFilter(不明なソース) の java.awt.EventDispatchThread.pumpEventsForHierarchy(不明なソース) の EventDispatchThread.pumpOneEventForFilters(不明なソース) java.awt.EventDispatchThread の java.awt.EventDispatchThread.pumpEvents(不明なソース)。 java.awt.EventDispatchThread.run(不明なソース) での pumpEvents(不明なソース)

今私の質問は、どのように/どこで検索を開始すればよいですか? この例外の理由がわかりません。が表示されます。例外。ランダムに発生するため、見つけるのも難しくなります。

それで、誰かがどこから始めるべきか考えていますか(または、おそらく私が原因ではないスイングの問題です)?

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

java - クリップを使用してペイント時間を短縮する方法は?

私はCPUの負荷を減らすためにクリップを使用しようとしています。

しかし、クリップは私が取り除くことができないように見えるいくつかのゴミを画面に残します。また、クリッピングのオンとオフを切り替えても、CPUの負荷には影響しないようです。

どちらの場合にも。ほとんどの時間は、リペイントマネージャとペイントバッファリングされたイメージに費やされているようです。

ありがとう

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

java - repaint() が常に paintComponent を呼び出さない理由と、呼び出されたときに常に適切に動作しない理由

私は Java で Tetris クローンに取り組んでいますが、行全体をクリアして上記のすべてを削除するまで、すべてが適切に機能しているようです。私のデータはすべて変換を適切に表していますが、私の paintComponent メソッドは行をクリアするだけのようですが、repaint() 呼び出しの前と同じように上に表示されているものはすべて残します。新しいピースはファントムブロックを通り抜けて落ち、上のピースが落ちたであろう一番下の列の目に見えないブロックに着地します。

これが私のペイントコンポーネントメソッドです:

これは、タイマー リスナーの actionPerformed メソッドの一部で、ブロックを検出/クリアし、repaint メソッドを呼び出します。

最初の repaint() メソッドが呼び出されるまでに、well 配列は行全体が完全に null であることを適切に示します。repaint() メソッドでパネルを更新してこの空の行を表示したいのですが、paintComponent() が呼び出されていないようです。これは 2 番目の repaint() メソッドにも当てはまります。行をクリアしてドロップダウンした後、ブロックを新しい位置に表示するようにフレームを更新したいと考えています。繰り返しますが、paintComponent() は呼び出されません。ただし、前回の repaint() 呼び出しでは、落下するピースの位置を更新するだけで、以前に行う必要があったかどうかに関係なく、repaint() は paintComponent() を呼び出します。質問 1 は、なぜ paintComponent() が repaint() 呼び出しのこのインスタンスでのみ呼び出されるのかということです。

ただし、paintComponent() が呼び出されてメソッドの最後に到達すると、デバッグ モードで追跡して、パネルが変更を反映する行を確認します。:"Repaintmanager.paintDirtyRegions(Map< Component,Rectangle >)" 行:856 に到達すると、行がクリアされ、新しい落下ピースが表示されますが、見えないブロックとファントム ブロックがあります。

2 つ目の質問は、なぜ paintComponent() がこのように動作するのかということです。明らかに、Repaintmanager と Java ペインティング全般についてかなり読む必要がありますが、誰かが私にこれを説明してくれれば非常にありがたいです。

重要な場合の主な方法は次のとおりです。

}

これが不快に長い場合は申し訳ありません。

0 投票する
0 に答える
419 参照

java - repaint() の後に JPanel を削除すると、JPanel へのペイントが壊れます。

コーディングしているアプリの 2D レンダラーを作成しようとしています。
私はすべての画像を JPanel に描画するために paintComponent を使用しています。物事はうまくいかない。

まず、私はこれを使用しました:

フレームがJPanelsでオーバーロードすることを除いて、これはうまくいきました。

これをコードとして使用すると、すべてが完全に機能しました。

これは私が必要としていたものに最適です。ただし、コンテンツ ペインに表示される内容でコンソールがスパム処理されるのは望ましくありません。

そこで、リスト メソッドを削除して、次のようにすることにしました。

それはそれが悪化したときです。

これが私が得るエラーです。

修正方法について何か提案はありますか?

0 投票する
0 に答える
63 参照

java - RepaintManager で設定した Swing Graphics2D のクリップを拡大する方法

Swing の再描画管理に行き詰まっています。コンポーネントの背景をぼかしたい。BufferedImage を使用して、コンポーネントでカバーされているものをキャプチャしてぼかします。paintComponent() では、ぼかした画像を背景としてペイントします。

コンポーネントが完全に再描画された場合はすべて正常に動作しますが、次のシナリオでは問題を克服できません。

  • コンポーネントは私のコンポーネントによって覆われていますが、完全には重なっていません
  • 再描画が実行される前に、グラフィック オブジェクトへの変更を制限する RepaintManager によってクリップ (遮蔽されたコンポーネントを覆う部分領域) が設定されます。
  • ユーザー クリップの設定/クリアは、常にこのクリップ領域と交差します
  • 新しいグラフィックス オブジェクトの作成は、常にコピーであるか、このクリップ領域と交差します
  • ペイントしたい画像がぼやけているため、RepaintManager で設定したクリップの外側にピクセルを描画する必要があります

RepaintManager によって設定されたクリップに関係なく、コンポーネントが paintComponent() ですべてのピクセルをペイントできることを確認するにはどうすればよいですか?

助けていただければ幸いです。

事前に助けてくれてありがとう。

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

java - Java アニメーションと Repaint Manager

アニメーションを作成しようとするときに RepaintManager がどのように機能するかを正しく理解するのに役立つことを願っています。基本的に、生き物/画像をJFrameに描画して更新するプログラムを作成しています。各クリーチャー オブジェクトには、x、y 座標や BufferedImage など、ペイントで描画できるすべての情報が含まれています。現在、クリーチャー オブジェクトが移動するたびに、repaint() が呼び出されます。これは、以下の paint/paintComponent (どちらが最適かはわかりません) メソッドでわかるように、既存のすべてのクリーチャーをループして、画面上の位置とグラフィックを更新します。 .

私の質問は、 RepaintManager が画面上のすべてを再描画していることを懸念しているため、これがこれを行うための最良の方法です。これはあまり効率的ではありません。更新メソッドのクリッピングまたはオーバーライドに関するいくつかの投稿/記事を読んだことがありますが、それらについて理解することはできません-再描画が呼び出されるたびに、変更されたオブジェクト/クリーチャーのみを更新することは可能ですか?

私が話していることのいくつかのコード:

paint メソッドのすべてのグラフィックスは変更されず、再描画する必要はありませんが、以下のメソッドは...

}

重要な部分は、強化された for ループの最初の行です。これは、JFrame ウィンドウに画像を描画するためです。createImage メソッドは単純に生き物の画像を取得し、変換/変更します。たとえば、ペイントが使用する前に左に移動すると反転します。

アニメーションは現在、スレッドを実行している各クリーチャーによって処理されますが、クリーチャーが新しいクリーチャーを crlist に追加しようとすると現在 ConcurrentModificationException が発生しているため、Swing Timer の方が良いかどうかも疑問です。

したがって、クリーチャーの移動と再描画ごとに1秒ごとに呼び出されますが、ペイント内の各クリーチャーをループする必要がないか、再描画が呼び出されたときにそれを呼び出したクリーチャーのみを更新する方法が必要です。

提案や別の投稿を教えていただければ幸いです。ありがとう。