問題タブ [jpopupmenu]

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 に答える
2702 参照

java - JPopupMenuを閉じます

PopupMenuの1つのJMenuItemが選択されていない(マウスオーバー)ときに、画面上のいくつかの要素を強調表示したいと思います。だから私は私のJMenuItemでMouseListenerを使用します

正常に動作しますが、Escキーを押すと、ハイライトをクリーンアップせずにポップアップメニューが閉じます。これを処理するためにJPopupMenuの終了をインターセプトするにはどうすればよいですか?

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

java - 左クリックでポップアップ

Javaでアクションリスナーを介してボタンにポップアップを作成しようとしています。

私はいくつかのコードを持っていますが、私は近いと思いますが、それを動作させることができません! このコードは例からのものですが、Pmenu.show の場合、最初の引数を削除する必要があり、何に置き換えればよいかわかりません。これが問題のようです。

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

java - Swing and Nimbus:JPopupMenu(JMenuに接続)の背景を置き換えます

ニンバスは見栄えがすることがよくありますが、特定の色の組み合わせでは、結果が最適ではありません。私の場合、aの背景がJPopupMenu合わないので、手動で設定したいと思います。

私はJava7を使用していますが、興味深いことに、NimbusはUIManager(のようなPopupMenu.background)のいくつかのプロパティの設定を完全に無視します。JPopupMenuしたがって、私の唯一のオプションは、そのオーバーライドのサブクラスを作成することでしたpaintComponent(...)。私は知っています、それは厄介ですが、少なくともそれはうまくいきました。

ただし、JMenuを別のメニューに追加すると、それ自体のインスタンスが埋め込まれJPopupMenu、それを自分のサブクラスに置き換える方法がわかりませんでした。

埋め込みインスタンスに独自のものを割り当ててPopupMenuUIも、結果は得られませんでした。JPopupMenuオーバーライドされたメソッドから直接継承された場合paint(...)は呼び出されましたが、何をしても何も描画されませんでした。継承元javax.swing.plaf.synth.SynthPopupMenuUI paintが呼び出されない場合、結果は私がまったく自分自身PopupMenuUIを設定しなかった場合になります。

JPopupMenuしたがって、簡単な質問は次のとおりです。Java7でL&FとしてNimbusを使用して、1つまたは(それが簡単な場合は)すべての背景色を調整するにはどうすればよいですか?

編集:コード例

次のコードと結果を見てください。

UIManager.put(key, value)L&Fを設定するUIManager.getLookAndFeelDefautls().put(key,value) 前に使用する必要があると言う人もいますが、私にとっては結果は得られません(つまり、デフォルトの色はまったく変更されません)。上記のコードは少なくとも以下をもたらします:

最初のスクリーンショット

を使用すると、同じことが起こります(何も意味しません)JPopupMenu.setBackground(...)。これは、ニンバスが内部ペインターを使用しているためです。内部ペインターは、ニンバスの原色から色を計算し、コンポーネントのプロパティを無視します。この例では、回避策として以下を使用できます。

これは

SecondScreen

ただし、この回避策は、JMenuそれ自体がラップするを挿入した場合は機能しませJPopupMenuん。オーバーライドすることはできません。

予想通り、与える:

3番目の画面

JPopupMenuこれはを使用して取得できますJMenu.getPopupMenu()が、設定することはできません。の独自のサブクラスでこのメソッドをオーバーライドしても、ゲッターを使用せずにのラップされたインスタンスにアクセスするように見えるためJMenu、結果は得られません。JMenuJPopupMenu

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

java - Java/Swing/Mac OSX: ScreenMenuBar を使用して JMenu を JPopupMenu に変換する

メニューバーを備えたメイン GUI と、メイン GUI の一部をフルスクリーン排他モードで表示する別のフルスクリーン フレームを持つアプリケーションがあります。フルスクリーン モードのとき、メニュー バーのドロップダウン メニューを jpopupmenu としてバインドしたいと考えています。

Swing は、JMenu で関数 getPopupMenu() を提供します。この機能は一見問題ないように見えます。メニュー項目にカーソルを合わせると、サブメニューに移動して表示できます。サブメニューにカーソルを合わせるとサブメニューが強調されますが、プレーンなメニューアイテム (またはラジオボタンメニューアイテムまたはチェックボックスメニューアイテム) にカーソルを合わせてもアイテムは強調されません。ただし、実際にはメニュー項目をクリックできません。ただし、キーボード ショートカットは実際には問題なく機能します。この問題は、このフォーラムで提示されたものと基本的に同じです (ただし、問題は解決されていません)。

http://www.java-forums.org/new-java/16463-jmenu-jpopupmenu.html

メニューバーが初期化され、メイン GUI で使用/表示された後に JMenuItem を追加すると (したがって、フルスクリーン フレームに切り替えるとき)、メニュー項目は実際にクリック可能になります。このメニュー項目は、メイン GUI のメニューバーでもクリック可能です。jMenu を初期化した直後に getPopupMenu() を実行しても、何も変わりません。全画面排他モードを使用しなくても、問題は何も変わりません。

編集

私はいくつかの重要な情報を忘れているようです: 私は Mac OSX でアプリをテストしており、以下を使用しています: System.setProperty("apple.laf.useScreenMenuBar", "true");

メニュー バーを作成するには、ネイティブ メニューバーを使用します。これを無効にすると、ポップアップ メニューは期待どおりに機能します。これは、Mac Java API のバグのようですか? これを克服する方法はありますか?

これについて言及するのを忘れてしまったことをお詫びします。これが何かに影響を与えるとは知りませんでした (明らかなように思えますが)。

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

java - シンセL&Fを使用してAWTUtilities.setWindowOpaque(window, false)を使用するJFrameのJPopupMenuが表示されない

これは私をかなり当惑させました。基本的に、カスタム Synth L&F を使用して、透明な形状のウィンドウを使用するマルチ ウィンドウ アプリケーションを開発しています。アプリケーションの一部は、親フレームからJFrame/コンポーネントを呼び出します。JDialogこれらのコンポーネント内にポップアップ メニューとコンボボックスがありますが、問題は、アプリケーションを使用している一部の人々が、呼び出し時にポップアップ メニューが表示されないという経験をすることです。例外はなく、コードはポップアップ メニューの「show」メソッドを含めて正常に実行されます。

私はこれをOSの仕様に当てはめようとしましたが、Mac OSXでは問題がないようです。私のような一部の Windows ユーザーは問題を経験しませんが、他のユーザーは問題を経験します....

また、ウィンドウの不透明度を設定する問題のあるコード行を追跡しました。

この LOC を削除すると、ポップアップ ウィンドウは正常に表示されます。さらに、この LOC を次のように置き換えます。

同じ問題が発生します。もう 1 つのことは、デフォルトの L&F を使用すると、ポップアップが正常にレンダリングされることです。

JFrame問題がとコンポーネントの両方で同じであることを確認するために、JDialog他の誰かがこの問題に遭遇したか、考えられる原因の方向に私を向けることができるかどうか疑問に思っていました.

乾杯

再現するテスト ソース:

そしてtestskin.xml:

前述のように、次を削除します。

コンボボックスのポップアップ メニューを正常にレンダリングし、すべてのスタイル (style="backingStyle" の下) にデフォルトの背景を追加します。

少なくともポップ メニューは表示されますが、まだ適切にレンダリングされていません。3 台の Windows XP 仮想マシンでこれを試しましたが、すべて同じ問題が発生します。さらに、私がこれについて言及したとは思いませんが、これは JDK 7 で構築されており、すべての場合において同等の JRE で実行されます。私自身、Windows 7 Ultimate 64 ビットで問題はありませんが、Windows 7 プレミアム 64 ビットを使用している別のユーザーは同じ問題を経験しています。


次の場合、ポップアップ メニュー コンポーネントのペイント メソッドの呼び出しに失敗します。

が設定されています。「show」メソッドを呼び出した後に repaint、updateUI、revalidate を手動で呼び出すと、ポップアップ メニューが正常にレンダリングされます。カスタム UI を設定し、「createPopup」メソッドをオーバーライドするコンボックス要素の場合、javax.swing.plaf.basic.BasicComboPopup を拡張するクラスを使用して、表示時に repaint/updateUI/revalidate を呼び出します。

コンボメニューが正常にレンダリングされるようにします。ただし、ポップアップはプライベート メソッド内で作成されるため、ポップアップの submneu (JMenu) アイテムの回避策をまだ見つけていません。これはバグのようですが、何か間違ったことをしている場合は、誰かが私に知らせてくれます:)

乾杯

ジョナサン

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

java - ポップアップメニューをJavaで機能させるにはどうすればよいですか?

ポップアップメニュープログラムを見つけましたが、スタンドアロンで動作します。次に、別のプログラム「Note」を作成しました。このプログラム内に、ポップアップメニュー機能を追加したいと考えています。

ポップアップメニューの部分は次のとおりです。

そして、「メモ」コードは以下にあります(部分的):

ただし、これらのコードを使用すると、ポップアップメニューが機能しない場合でも、「メモ」は正常に機能します。jFrame関連のコードは正しくないと思いますが、修正方法がわかりません。誰が助けることができますか?ありがとう!

さらに、NetBeansを使用してプロジェクトを作成しました。以下はコンパイル情報です(理解するのは難しいです)。

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

java - jpopupmenuでjradiobuttonのユーザー選択をキャッチする方法は?

フレームとメニュー項目にポップアップメニューを表示することができました。ラジオボタンのグループは、矢印キーでナビゲートできます。ユーザーがEnter/Returnを押すと、ポップアップメニューが表示されなくなり、選択されたボタンを判別してアクションを割り当てることができると思います。

また、次のようにフレーム全体にキーマッピングを実装しました。

ユーザーがEnterキーを押す前に、どのラジオボタンが選択されたかを確認するにはどうすればよいですか?

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

java - JMenuはWindows7LAFJava7でfocuslostイベントを消費します

別のコンポーネントがクリックされたときにポップアップメニューがまだ開いている場合、そのコンポーネントはイベントを取得しません。これは、ポップアップによって消費されている可能性があるためです。これは、一般的にすべてのJPopupmenuで発生します。これは、Windows LAF(Windows7)を搭載したJava7でのみ発生します。回避策はありますか?既知のバグですか?

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

java - JPopupMenuを呼び出したコンポーネントを取得するにはどうすればよいですか?

複数のJTableに追加したJPopUpMenuがあり、右クリックして変更できるように特定のテーブルを取得したいと思います。アクションリスナーでJPopupMenuをトリガーするコンポーネントを取得するにはどうすればよいですか?