ホームページ > Java > &#&チュートリアル > Swing で RepaintManager から例外をトリガーするにはどうすればよいですか?

Swing で RepaintManager から例外をトリガーするにはどうすればよいですか?

DDD
リリース: 2024-12-23 13:59:15
オリジナル
692 人が閲覧しました

How Can I Trigger Exceptions from the RepaintManager in Swing?

RepaintManager からの例外のトリガー

はじめに

前回のお問い合わせで、SwingWorker スレッド内で処理できない例外が発生したとおっしゃいました。この記事では、RepaintManager クラスに起因する例外の生成に関する具体的な問題について詳しく説明します。

RepaintManager 例外の生成

1. CheckThreadViolationRepaintManager の使用:

このような例外を生成するための実績のあるアプローチは、CheckThreadViolationRepaintManager クラスを使用することです。このカスタム クラスは RepaintManager を拡張し、再ペイントまたはダーティ リージョンの追加操作をインターセプトします。これらのアクションがイベント ディスパッチ スレッドの外部で発生した場合、例外がトリガーされ、そのスタック トレースが出力されます。

public class CheckThreadViolationRepaintManager extends RepaintManager {

    // Override methods to check for thread violations and print stack trace if found

}
ログイン後にコピー

2. RepaintManager の設定:

CheckThreadViolationRepaintManager インスタンスを作成したら、それを現在の再ペイント マネージャーとして設定する必要があります:

RepaintManager.setCurrentManager(new CheckThreadViolationRepaintManager());
ログイン後にコピー

3.違反のトリガー:

例外をトリガーするには、イベント ディスパッチ スレッド以外のスレッドから再ペイントまたはダーティ リージョンの追加操作を実行します。例外がスローされ、コンソールに出力されます。

例:

public static void main(String[] args) {
    RepaintManager.setCurrentManager(new CheckThreadViolationRepaintManager());

    // Create a frame and repaint it from a separate thread
    JFrame frame = new JFrame();
    SwingUtilities.invokeLater(() -> frame.repaint());
}
ログイン後にコピー

このコードにより、CheckThreadViolationRepaintManager はバックグラウンド スレッドからの再描画操作を検出し、例外を出力します。

追加考慮事項

  • 完全チェック: デフォルトでは、CheckThreadViolationRepaintManager はすべての再描画操作をチェックします。オプションで、completeCheck フラグを false に設定して、表示されているコンポーネントの再描画のみをチェックすることができます。
  • 特定のスレッドの無視: CheckThreadViolationRepaintManager の ViolationFound メソッドをオーバーライドして、特定のスレッドを無視することで違反検出をカスタマイズできます。 、SwingWorker スレッドなど。

以上がSwing で RepaintManager から例外をトリガーするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート