問題タブ [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.
java - JTree の JPopupMenu に関する問題
この問題があります。カスタム JTree で JPopupMenu を実装し、MouseListener を使用して選択されたノードに応じて異なる JMenuItem を表示しました。マウスの右ボタンをクリックすると JPopupMenu が表示されます。問題は、PopupMenu からアイテムを選択せずに、ツリー内の別のノードを右ボタンまたは左ボタンで選択した場合、このイベントがツリーによって決してキャッチされないことです。これを解決しますか?例が利用可能な場合、私はそれを感謝します。ありがとう。
java - バックエンドのデータ構造と同期するJTableの設計
テーブルモデルを使用してデータ構造からロードされるJTableがあります。データ構造の形式は次のとおりです。データのNavigableMap<Float,NavigableMap<Float,Boolean>>
例は次のとおりです。
上記のデータ形式は、DSでは次のように表されます。
私はtable-modelを使用してJtableで上記のデータを表現することができました。データがDSからテーブルにロードされたら、ユーザーによる編集を許可する必要があります。ここで問題が発生します。テーブルの変更と同期したデータ構造、またはユーザーが編集を終了したらテーブルからDSを再作成し、古いものと置き換える必要があります。
さらに、データを検証する必要があります(たとえば、上記から-ユーザーが値30.1を編集したいとします。彼は、12.1から45.6までの値のみを入力できるようにする必要があります。データは文字列(ロードされた後)であるため、私は正規表現とキーリスナーを使用し、範囲内にない正規表現と値と一致しないすべてのユーザーキー押下を消費することを計画しています。これが良いアイデアであるか、または影響があるかどうかはわかりません。これについていくつかの提案を得るのが好きです。
swing - チェックボックスをチェックしたときに JPopUpMenu が消えるのを防ぐにはどうすればよいですか?
JCheckBoxMenuItem
でsを使用したいJPopupMenu
。動作しますが、問題は、チェックボックスの項目をオンまたはオフにするとポップアップ メニューが消えることです。そのため、複数のアイテムをチェック/チェック解除したい場合、ポップアップを繰り返し起動する必要があり、イライラします。
JCheckBox
不思議なことに、 (s の代わりに) メニューで単純なアイテムを使用するJCheckBoxMenuItem
と、動作は本来あるべきものになります: ポップアップはそこにとどまり、チェックボックスはチェック/チェック解除できます。完了したら、ポップアップの外側をクリックするだけでポップアップを閉じることができます。
アイテムがあるときにポップアップをそのように動作させるにはどうすればよいJCheckBoxMenuItem
ですか? 見た目から sを使用することをお勧めしJCheckBoxMenuItem
ます。
java - 下層のウィンドウがESCで閉じる場合、JPopupMenuのESC-Closeを有効にする方法は?
VK_ESCAPE (ルート ペインでキー バインディングとして設定) で閉じる JDialog(または JFrame) と、ESC でも閉じるはずの内部 JPopupMenu という 2 つの一般的な状況を組み合わせて想像してみてください。問題は、エスケープを押すと常にダイアログが閉じられることです - ポップアップが表示されている場合のイベント。どうやら、ポップアップはキーイベントを受け取ることさえできないため、ポップアップで消費することはできません。最初のESCイベントでポップアップが閉じられ、2番目にダイアログが閉じるように、これを正しく機能させる方法はありますか? ちなみに、デフォルトではエスケープが押されると閉じるJComboBoxで動作します。
java - Java:呼び出し側コンポーネントを渡さずにJPopupMenuを表示する
「呼び出し元コンポーネント」を渡さずにJPopupMenuをポップアップさせると、メニューが機能しません。サブメニューが開かず、再描画されません。しかし、内部にJLabelを使用して完全に役に立たないJFrameを作成し、JLabalを呼び出し元として渡すと、正しく機能します...
任意の提案、役に立たないフレームの作成を回避する方法。そして、私のアプリケーションは実際にはフレームを開いていません。単純なメニューをポップアップするだけです。
ありがとう
java - JCheckBoxがクリックされたときにJPopupMenuを表示するにはどうすればよいですか?
JCheckBox
プログラム(「ミニタイマーを使用」というラベルが付いています)に、右クリックするとJPopupMenu
、「閉じるときに表示」、「最小化に表示」、「閉じるまたは最小化に表示」、「ミニタイマーを使用しない」のオプションが表示されます。 "。左クリックしJPopupMnu
たときにもこれを下に表示するにはどうすればよいですか?JCheckBox
のactionPerformedメソッドをに設定しようとしましたが、メレルが画面の左上隅に表示され、それでも相互作用が登録されないことに注意しJCheckBox
てminiTimerPopupMenu.setVisible(true);
くださいJPopupMenu
。誰かが共有したい経験や提案がありますか?
java - サブメニューを表示するときのJPopupMenuのバグ/グリッチ(?)
ポップアップメニューにこの奇妙なバグがあります。それはめったに、そして一見ランダムに起こります。問題は、JPopupMenuにサブメニューがある場合です。サブメニューを選択すると、メインメニューが消え、サブメニューが正しく描画されません(メインメニューのバッファーがサブメニューの上にペイントされているようです)。キーボードを使用してナビゲートすることはできます。
ここにいくつかのスクリーンショットがあります:これはそれがどのように見えるべきかです
そして、これはバグが現れたときの様子です:
したがって、2番目の画像のグリッチは、サブメニューがあるべき場所です。
何が原因でしょうか?スローされる例外はなく、プラットフォームに関連しているようには見えないので、これを絞り込む方法がわかりません。助けてください。
編集以下は、問題を再現するsscceです。
java - ポップアップ メニューが呼び出された JTable 行を検索します。
JTable と、各行に固有のポップアップ メニューがあります。ユーザーがマウス (Windows L&F) を右クリックしてポップアップ メニューを表示した行を計算したいと考えています。
テーブルの MouseListener を作成して、クリック時に MouseEvent を取得し、正しい場所にポップアップ メニューを表示します。しかし、ユーザーがポップアップ メニューから 1 つの項目を選択すると、ユーザーが最初に右クリックした行が何であったかを判断する方法がわかりません。ポップアップ メニュー呼び出しのイベントには、右クリックが行われた場所の x、y 座標がありません。
ポップアップの位置を取得することを見てきましたが、それはテーブルではなくフレームに属しているため、それもその親も、必要な正しい x、y 値を持っていません。
JPopupMenu をサブクラス化し、MouseListener に必要な x 値と y 値を設定することで、この問題を回避しました。しかし、これは JTable にポップアップ メニューを配置したい人にとって一般的な問題であるように思えます。
これを行う簡単な方法、特に JPopupMenu のサブクラス化を伴わない方法はありますか?
java - 検査プロパティ ウィンドウを作成し、ボタンを JDialog として駆動する
私が最初に尋ねたことは、私の質問/問題を明確に述べていなかったので、よりよく説明します。を可視JButton
に設定するがあります。JDialog
JDialog にはWindowListener
、イベントで非表示に設定する がありますwindowDeactivated()
。これは、ユーザーがダイアログの外側をクリックするたびにトリガーされます。このボタンActionListener
は、ダイアログが表示可能かどうかをチェックし、true の場合は非表示にし、false の場合は表示します。
windowDeactivated()
ユーザーがダイアログの外側をクリックしている限り、ボタンをクリックするかどうかにかかわらず、常にトリガーされます。私が抱えている問題は、ユーザーがボタンをクリックしてダイアログを閉じるときです。ダイアログは によって閉じられ、 はWindowListener
それActionListener
を表示しようとします。
そうwindowDeactivated()
でない場合setVisible(false)
、ダイアログは開いたままですが、親ウィンドウの背後にあります。私が求めているのは、内部のクリックの場所にアクセスする方法ですwindowDeactivated()
。ユーザーがボタンをクリックし、windowDeactivated() がダイアログの非表示をスキップできることがわかっている場合は、ボタンがActionListener
まだ表示されていることを確認して非表示にします。
swing - JPopupMenuをJMenuBarに追加するにはどうすればよいですか?
ポップアップメニュー付きのアプリケーションがあります。ポップアップを通常の方法で使用したいのですが(つまり、ユーザーがウィンドウ内の任意の場所を右クリックしたときに表示されるはずです)、ウィンドウ上部のメインメニューバーにもポップアップを添付したいと思います。これを行う方法がわかりません。
myJMenuBar.add(myPopupMenu)を呼び出すのと同じくらい簡単だと思いましたが、これは機能しません。
JMenuBar.add()は、JPopupMenuではなくJMenuパラメーターを必要とします。
誰か提案はありますか?