問題タブ [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 - 追加されたグラスペインは、任意のコンポーネントに対して getMousePosition() を呼び出し、null を返します
カスタム グラスペイン コンポーネントを作成し、それを myJFrame
およびJDialog
classes に設定しました。カスタム グラスペインでマウス イベントをインターセプトしません。必要がないためです。また、GUI にはツリーやポップアップなどの多くのコンポーネントがあり、マウス イベントをインターセプトして転送するのが複雑になるためです。フレーム/ダイアログ内getMousePosition()
の他のコンポーネント (例: )を呼び出すたびに が返されることを除いて、すべてがそのまま正常に動作します。JPanel
null
私のJFrame
とJDialog
クラスでは、グラスペインをdisabled
(but visible
) に設定しましたが、ほとんどの場合は機能します。getMousePosition()
グラスペイン コンポーネントにマウス イベント リスナーを追加しなくても、メソッドが正しい値を返すにはどうすればよいですか。
問題を示すサンプル コード。
ガラス板をフレームに追加するための 3 行をコメント アウトすると、マウスの位置が正しく出力されます。これは問題を説明するための簡単な例です。上で述べたように、マウス リスナーをカスタム グラスペイン コンポーネントに追加すると、他の複雑さが生じるため、これを追加したくありません。
java - GlassPane がマウス イベントを正しくディスパッチする
フレーム内の要素を移動するために GlassPane を使用しています。ドラッグされた要素がない場合、すべてのマウスイベントは通常の方法で送出されます
しかし、これにより、マウス イベント処理で異常な動作が発生します。例: マウス リスナーを持つ JPanel があります。このパネルをダブルクリックすると、別のフレームが開きます。このパネルにはいくつかのラベルがあります。Glasspane がない場合、このラベルをクリックできます。ラベルはマウス イベントに作用しないため、イベントはパネルに渡され、クリック アクションが実行されます。ディスパッチ ルーチンを使用するとき、マウス イベントをラベルに直接ディスパッチしますが、これはもちろんアクションにつながりません。
では、どうすればこれを修正できますか?もちろん、Panel への参照を使用して独自のラベル クラスを作成し、マウス イベントを再びパネルにディスパッチすることもできますが、これは適切な設計とは言えません。2 つ目は、Glasspane ディスパッチャーで、最も深いパネルがマウス イベントに関心があるかどうかを判断できることです。
何か案は?
java - 「次へ」をクリックしたときに待機カーソルを表示する - Netbeans WizardDescriptor
いくつかの PanelDescriptor を持つ Wizard Iterator があります。WizardDescriptor.ValidatingPanel を実装する 1 つの PanelDescriptor で [次へ] をクリックすると、待機カーソルを表示しようとしています。実行に時間がかかる validate() メソッド。
これまでのところ、いくつかの方法を試しましたが、どれもうまくいきません。
- http://dev.platform.netbeans.narkive.com/ofiffInN/finally-a-waitcursor-routine-that-works-in-netbeans
http://netbeans-org.1045718.n5.nabble.com/Setting-wait-cursor-td3026613.html#a3026614
/li>- /li>
私を正しい方向に向けるヒントがあれば幸いです。
java - マウスイベントをJavaFXのすべての重なったペインに委譲する方法は?
マウスイベントを処理/前処理したいが、それらを消費してはならないトップデコレーションペインがあります。
これを行う方法?何度か挑戦して失敗しました。
以下は、3 つのペインを持つコードです。緑色のものは「飾り」です。タスクは、マウス イベントに対して透過的にすることです。黄色と青のペインはワーカー ペインです。それらは、緑色のペインに重なっていないかのように機能するはずです。
ただし、緑色のペインはマウス イベントを受け取る必要があります。
コメント行は私が試したことを示し、コメントは何が間違っているかを示します:
layer - Gluon モバイル 5 レイヤーが非表示にならない
バックグラウンド IO がビジー状態のときにアニメーションの進行状況インジケーターを表示するビジー レイヤーを作成しました。Gluon モバイル 4 のガラス板にレイヤーが追加されます。
Gluon 5 では getLayers が削除され、移行ガイドに従ってレイヤーを直接表示できます。
ただし、レイヤーは非表示ではありません。
====
メイン プレーヤーはシングルトンの Background クラスであるため、BusyLayer は 1 回だけ表示されます。
そして、CompletableFutures を使用して非同期タスクを実行する次のようなコードを作成します。
もちろん、BusyLayer 自体:
}