問題タブ [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 - 個々のパネルのJava Swing GlassPane機能?
JFrame 全体を満たす単純なインターフェースを作成しました。ここでは、インターネットで発見されたクラス FinalGlassPane のバージョンを使用しています。
このガラス ペインには通常のイベント リスナーはありませんが、基礎となるコンポーネントの AWTEvents を監視します。このようにして、インターフェースの機能がすべて利用できるようになり、単一の AWTEvent ハンドラーを使用してグローバルなマウスの動きの座標に応答し、それに応じてすべての上にペイントすることができます。すべてがうまく機能しますが、メインの JFrame 内に、それぞれ独自の座標空間とイベント ハンドラーを持つ、この機能の複製が必要です。JLayeredPane について学んだばかりですが、この機能が JLayeredPane で可能になることを確認したかったのです。IE は、完全に透明であるがペイント可能な JPanel レイヤーを一番上に追加し、それで AWTEvents を処理し、基になるイベントを正常に起動します。
編集: JDesktopPane 内で複数の JInternalFrame (および関連するガラス ペイン) を使用することについて読んでいます。JDesktopPane がレイアウト マネージャーで動作するとは思わないため、必要に応じて 2 つのフレームを絶対に配置/サイズ変更する必要がありますが、これが最適なオプションである可能性があります。編集終了
最後にやりたいことは、すべてのインターフェイス コンポーネントにマウス移動リスナーを追加し、同じメソッドを実行するために親パネルの座標に変換する必要があることです。
必要に応じて、グラス ペイン全体のマウス座標を監視し続け、そこからロジックを分岐する方法を見つけ出すことができました。ただし、自己完結型で個別化されている方がよいでしょう。
最後の注意点として、最終的にはこれを Android に導入したいと考えていますが、Android のグラフィックスについては何も知りません。階層化されたパネル機能がない場合は、最初から 1 回だけ、より難しく、より移植性の高い方法で実装したいと思います。
java - JLayeredPane を既存の JFrame に導入する
私は Oracle の JLayeredPane チュートリアルをじっと見てきましたが、それらは私を混乱させる方法でレイアウトされており、私がやろうとしていることを理解できません。
これまでレイヤーの概念がなかったアプリケーションがあります。すべてが JFrame 内の単一のレイヤーに配置されます。
ここで、必要に応じて特定の場所に散発的に表示されるコンポーネントを導入し、通常そこにある既存のコンポーネントをオーバーレイします。すべての最上位コンテンツ (つまり、JFrame に直接追加されるコンポーネント) が代わりに JFrame の JLayeredPane に追加されるように、既存のアプリケーション JFrame を変更する必要がありますか?
または、正確には何ですか?
この GUI を適応させて、既存の GUI の再作業を最小限に抑えてレイヤーを使用する簡単な方法を探しています。
ここで助けてくれてありがとう。
java - JavaSwing-点滅するアイコンが表示されない
GlassPaneを使用してアイコンをユーザーにフラッシュしようとしています。私はjavax.swing.Timer
基本的にこれを実行するを実行しています:
残念ながら、EDT(タイマー内の現在のスレッド)paintComponent
をスリープすると、スレッドがスリープする前にメソッドが完全に呼び出されなかったため、アイコンが表示されません。したがって、次の命令が開始されると、ガラスペインが非表示になり、その結果、アイコンが表示されることはありません。この(同様の)アプローチを使用して、私が望むことを達成する方法はありますか?
java - GlassPaneを使用したJavaの内部透過選択ウィンドウ
私は次のことを達成しようとしています
http://www.qksnap.com/i/3hunq/4ld0v/screenshot.png
現在、次のコードを使用して、半透明のガラス板の背景に長方形を正常に描画できます。
これはうまく機能しますが、上のスクリーンショットのように外側がまだ暗くなっている間に、長方形内の領域を完全に透明にしたいと思います。
何か案は?
java - 透明なレイヤーを持つ JLayeredPane により、正しく描画されない
2 つのレイヤーを持つ JLayeredPane があります。トップ レベルは完全に透明で、マウス イベントをキャプチャしてその下のペインにディスパッチするガラス ペインとして機能します。理由は不明ですが、一番下のレイヤーが正しく描画されません。ペイントイベントをそれにディスパッチする必要がありますか?
ちなみに、フレームのガラス板を使いたいのですが、手に入りません。Swing の上に構築された GUI フレームワークによって提供される JPanel の使用に行き詰まっています。SwingUtilities を使用して親フレームを取得しようとしましたが、常に null が返されます。
web-services - LWUIT でガラス板を形成する
LWUIT で Form Glass Pane を使用して待機画面を作成しようとしています。以下は私が使用しているコードです。
と
そして私のフォームの中から
私が正確にやりたいのは、データのロード中にガラスパンを開き、終了したら非表示にすることですが、何が起こるかは、リクエストを送信し、応答を取得してガラスペインを表示した後、ガラスを入れようとしましたメインスレッドから独立して実行するために別のスレッドでペインを実行し、それも機能していません。
java - ループに入る前に GlassPane を表示する
(Swing GUI を使用した私のアプリケーションでは) JButton をクリックした後に呼び出されるループまたはメソッドで実行される作業中に GlassPane を表示したいと考えています。
例: (ボタンをクリックした後に実行されるアクション)
このコードを実行すると、someTimeConsumingMethod() の実行中に glassPane が表示されなくなります。結果が表示される前に、GUI が一瞬フリーズします。そのループ (glassPane.setVisible(false);) の最後の行を削除すると、メソッドが完了した後 (GUI がフリーズしたとき)、glassPane が表示されます。
GUI がフリーズする前にその glassPane を表示する簡単な方法はありますか、それともここで高度な知識を使用する必要がありますか? (スレッド?)
更新1:
davidXYZの回答に従ってコードを更新しました(2つの変更があります):
(ボタンクリック後の動作)
最初の変更のポイントは、GUI スレッドで someTimeConsumingMethod を実行する直前に新しいスレッドで glassPane を表示するように設定すると、someTimeConsumingMethod が終了した後に glassPane が明らかになることです (これを再確認しました)。
今では問題なく動作します。すべての回答に感謝します。スレッドを実際に理解するために、あなたが提供したすべてのリンクを必ず確認します!
UPDATE2: いくつかの詳細情報: someTimeConsumingMethod(); 私のアプリケーションでは、XML データに応じて新しい Swing コンポーネントを準備しています (カードは JButton と JLabel から構築され、必要に応じていくつかの JPanel を使用し、それらを正しい場所に追加します)。
UPDATE3:
SwingWorker の invokeLater メソッドを使用して機能させようとしています。これで次のようになります。
(ボタンクリック後の動作)
UPDATE1のコードほどうまく機能しません(ただし、それでも機能します)。問題は次のとおりです。
glassPane は .gif アニメーションなしで読み込まれます (ファイルはカスタム glassPane クラスで設定されます - UPDATE1コードで動作します)
「作業」プロセスの最後にわずかな遅延があります。最初のカーソルが (WAIT_CURSOR から) 通常に変わり、非常に短い時間後に glassPane が消えます。カーソルは、アクティブ化/非アクティブ化時にカスタム glassPane クラスによって変更されます (新しいスレッドの方法を使用して遅延はありません)。
SwingWorker の invokeLater メソッドを使用する正しい方法ですか?
編集:私の間違いです。SwingWorker と SwingUtilities.invokeLater() を混同しました。イメージの問題は、someTimeCONsumingMethod の開始時に GUI がフリーズしたことが原因だと思います。
java - Javaアプリケーションのセキュアデスクトップモード効果
Windows Vista / 7 UACの同意ブロックから得られるような「セキュアデスクトップモード」(効果)を実現する方法はありますか?
私はそれがあちこちのピクセルを削除し(そしておそらくそれらを灰色にする)そして最後にそれをスクリーンに描くいくつかの関数だと思います。これを自分のアプリケーションに適用して、別のユーザーがシステムに接続するまでユーザーが何もしないようにします(ただし、それは重要ではありません)。
アドバイスをいただければ幸いです。
よろしくお願いします、
A。
編集:私は本当にこれだけを探していました
入力の延期は非常にうまくできます。
ありがとうございます。
java - その背後にある UI に MouseListener を使用して JGlassPane をクリックする方法
の上にJFrame
と がたくさんあります。を利用する必要があり、この実装を使用してセットアップしました。JComponents
JFrame
JGlassPane
JButtons
その後、 のJComponents
下で何も選択できませんJGlassPane
。
GlassPane
の下のコンポーネントを選択する機能を持ちながら、選択可能なコンポーネントのみを表示する方法はありGlassPane
ますか?
編集私はガラス板にaMouseListener
と a の両方を取り付けたことを言及するのを忘れていました (これが関連することを知りませんでした) 。MouseMotionListener
マウス イベントを他のコンポーネントに渡し、必要な場合にのみ使用する方法はありますか?