問題タブ [glasspane]
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.
java - ガラス板を強制的に再塗装する方法は?
地図の上にガラス板がある Swing アプリがあります。
特定の位置にドットを描画します。マップ上のどこかをクリックすると、ガラス ペインが「CONTROLLER_NEW_POLYGON_MARK
I want do」というメッセージを受け取り、イベント データで指定された位置に追加のドットを表示します (「 」を参照MyGlassPane.propertyChange
)。
ガラス板クラスは と呼ばれMyGlassPane
ます。私が検証したデバッガーを使用するaddPointToMark
と、実際に呼び出されpropertyChange
ます。
しかし、追加のドットは画面に表示されません。
PointSetMarkingGlassPane.paintComponent
イベント ( ) が発生するたびに呼び出されるようにコードを変更するにはどうすればよいIEventBus.CONTROLLER_NEW_POLYGON_MARK
ですか?
java - jFlashPlayer は、glassPane、Java では動作しません
jFlashPlayer を使用しています (現在、VersaEdge Software によって廃止されています)。
jWindow に FlashPanel を表示していて、その上に GlassPane を配置して Flash 画像の上に描画したいと考えていますが、FlashPanel が表示されている場合、glassPane は機能しません。FlashPanel が表示されていない/開始されていない場合、glassPane は正常に動作します。
コードの関連部分は次のとおりです。
どこ
(提供された例から直接取得されます)および
このコードは 2 つのモニターで実行されます。1 つのモニターはフラッシュ ファイル (コードは示されていません) を制御し、もう 1 つのモニター (この 1 つ) はそれを表示します。GlassPane は他のモニターで正常に動作し、FlashPanel が開始されていないか、表示されていない場合は、このモニターで動作します。
フラッシュ ファイルは正常に動作し、提供されたコードで期待どおりに動作します。これは私の問題ではありません。
jFlashPlayer のすべてのサポート ファイル (ライブラリなど) のコピーは、http://java-flash-player-jflashplayer.soft32.comにあります。
前もって感謝します!
java - 循環再描画の問題
かなり大きな問題が発生しました。次の構造の GUI を作成しています。
MainFrame ( MainPanel ( JScrollPane ( ContentPanel ( Content1,Content2,Content3 ) ) ) )
MainFrame の上に GlassPane もあります。GlassPane クラスにはタイマーがあり、約 100 ミリ秒ごとに作動します。
このタイマーは、Content1 の JSlider の値を更新しています。JSlider には、現在の親指の X 座標を GlassPane に与える変更リスナーもあります。これらの座標は、変更された場合、ティックごとに線を描画するために使用されます。この行は、Content1、Content2、および Content3 にまたがっています。
現在、this.repaint()、MainPanel.repaint()、this.repaint(Rectangle)、MainPanel.repaint(Rectangle) を介してこれらのコンテンツを更新しようとしています。
残念ながら、これらのすべてのメソッド ( repaint(Rectangle) o0 でさえも) は、Content1、Content2、および Content3 の paintComponent メソッドを呼び出し、何らかの形で循環的な再描画を作成します。私はこのサイクルを説明することができず、すでにかなり絶望的です. 助けや提案があればとても感謝しています。
コードもいくつか提供したいと思いますが、それだけです。そして、何が役に立つのか本当にわかりません。
よろしく、トウモロコシ
java - GlassPane を JPanel の寸法に適合させる
スタックオーバーフロー!
私は、ナビゲーション システムの作成に関するプロジェクトに取り組んでおり、マップの描画とナビゲーション自体の作業を行っている初期段階にあります。すでに描画されている現在のデータの上に正方形を描画できる関数があります。mouseDragged アクション イベントごとに、道路のすべてのデータをもう一度再描画する必要はありません。これを行うには、ガラス板を使用するのが最適な選択であることがわかりました。
問題は、ガラス板の寸法とそれが読み取る座標に関係しています。JPanel (描画に使用) の特定の場所をクリックすると、適切にズームインする方法と場所が認識されますが、正方形を描画すると、マウスの位置よりも特定のピクセル数だけ上に描画されます。これは、ガラス ペインの寸法が JPanel の寸法に対応していないことが原因のようです。JPanel自体はメニューバーで発生したクリックを読み取らないのに対し、ガラスペインはメニューバーも覆っているようです。
どうにかしてガラス板を JPanel に合わせたいと思っており、いくつかの異なることを試しました。私が試したことの 1 つは、JPanel の代わりに JRootPane を描画することでしたが、それは可能ではないようです。次に、JPanel (独自のクラスもあります) から「MyGlassPane」クラスを取得して、再描画メソッドを呼び出そうとしましたが、そこから問題が発生しました。ごく最近、JPanel 自体が使用する、またはその一部である JRootPane を取得してから、この JRootPane のグラスペインを取得しましたが、JFrame に追加されたメニューバーもこの JRootPane の一部であるようです。つまり、ガラス板はメニューバーもカバーしています。
これは、問題をカバーする非常に単純化されたコードですが、マウスのリスニングやデータ描画の側面はカバーしていません。ただし、長方形がメニューバーの上に描かれているのが面倒だという事実を誇示しています。
これは、このコードを実行した結果の対応するスクリーンショットです。(ここでの活動が不足しているため、直接の画像を投稿できません)
私の説明が少なくとも少しは理にかなっていることを願っています。問題を実際に解決するには、私の説明がおそらく少し深すぎることは承知していますが、私の状況と、これに対する解決策が必要な理由について、皆さんにもう少し詳しく説明する必要があると感じました.
TL;DR: JPanel とグラスペインの両方で同じマウス イベント座標を受け取ることができるように、glassPane (どこかから取得/設定) を特定の JPanel のサイズに完全に合わせる方法が必要です。問題の視覚化については、上記のコードを参照してください。これについて賢い方法はありますか?RootPane グラスペインを設定することが私の最終的なアイデアでした...
誰かが何か洞察を持っているなら、前もって感謝します!
キルル~
java - Swing: 新しいダイアログを開いて既存のフレームにアタッチする方法は?
時々ダイアログが開かれるフレームがあります。このダイアログを既存のフレームにアタッチしたいので、たとえば、そのフレームをドラッグすると、開いたダイアログがそれに続きます。これを使用して達成できる可能性があると聞いたことがありますGlassPane
が、いくつかのヒントが必要です。現在、新しいダイアログを開いてその位置を相対的に設定するframe
と、次のようになります。
- 右上隅に取り付けられたフレームの横に「testDialog」を表示したいと思います。
- 「テスト」フレームをドラッグすると、「testDialog」がそれに続きます。
これが実際の例です:
java - jframeでぼやけた背景の上に透明な長方形を作成します
ぼやけた背景の上に透明な長方形を作成する際に問題があります。でこのタスクを実行しようとしていますglasspane
。これが私のコードスニペットです。
ここで、backBuffer と blurBuffer はBufferedImage
& jf = JFrame のオブジェクトで、アルファは不透明度に使用されます。上記の方法は、ぼかし効果を非常にうまく作成します。
パネル上に透明な長方形を作成するコードは次のとおりです
今私が立ち往生しているのは、ぼかし効果と透明な長方形を同時にペイントする方法です。コード全体をここに掲載したわけではありませんが、ここでコードを表示したい場合は、リンクを参照してください。
そして、ここにサンプル出力の望ましいイメージがあります。前もって感謝します。