問題タブ [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 - Java ポップアップ ボタン
注:私の質問を完全に理解するには、私の例をコンパイルして実行する必要がある場合があります。これがコーシャでない場合は、事前にお詫び申し上げます。
JToggleButton
および に基づく Swing コントロールを作成しようとしていますJPopupMenu
。
ポップアップ メニューが表示されている場合はトグル ボタンが選択され、ポップアップ メニューが表示されていない場合はトグル ボタンの選択が解除されます。JComboBox
したがって、ポップアップに任意のコンポーネントを含めることができる点を除いて、動作は に似ています。
次のコードは、コントロールを作成する方法の例です (独自のクラスにあることを除いて... a のようなものですJPopupToggleButton
)。残念ながら、異なるルック アンド フィールでは異なる動作を示します (Metal と Nimbus でテストしました)。
ここに投稿されたコードは、Metal では期待どおりに動作しますが、Nimbus では動作しません。Nimbus を使用する場合は、トグル ボタンを繰り返しクリックしてポップアップを表示および非表示にするだけで、意味がわかります。
次の行をコメントアウトすると、コードは Nimbus では期待どおりに動作しますが、Metal では動作しません。繰り返しますが、トグル ボタンをクリックし続けると、私の言いたいことがわかります。
だからここに私の2つの質問があります:
(1) Nimbus で、ポップアップ パネルを非表示にするクリックが、Metal のようにトグル ボタンに渡されないのはなぜですか?
(2) この問題を解決して、すべてのルック アンド フィールで機能するようにするにはどうすればよいですか?
java - マウスクリックでのみ popupMenu を開く Swing
JPopupMenu に関連する質問があり、誰かが私を助けてくれるかもしれません。
私が見る限り、JPopupMenu は、JMenu を押すと (これは JMenuBar にありますか)、または JMenu にカーソルを合わせると (JPopupMenu にある場合) 開きます。
したがって、JMenu を含む JMenuBar があります (「ファイル」と呼びましょう)。「ファイル」を押すと、JMenuItem と別の JMenu (「プロパティ」と呼びましょう) を含む JPopupMenu が開きます。ファイル JMenu にあるのと同じ動作をプロパティ JMenu に適用する方法はありますか?
これが JMenu の通常の動作を回避しようとしていることは知っていますが、これが可能かどうか考えている人はいますか?
java - Java rowAtPoint() が適切な値を返さない
私はJavaプロジェクトを作成しており、JTable
. 私がやりたいことは、 を にリンクするpopupmenu
ことjtable
です。にpopupmenu
は 4 つの異なる がありitems
ます。で選択したitems
、知っておく必要のあるものの一部。問題は関数にあります。適切な を返す関数を取得できません。をクリックすると、クリックしたのと同じ列にポップされます。しかし、または-functions (ラベル「addSelected」または「deleteSelected」の menuItem 内) を使用し、(s) が選択されていない場合は、-functions を使用して でクリックしているを見つけます。のようだrow
jtable
selectRow
row
jtable
right mouse button
popupmenu
addSelectedRow
removeSelectedRow
row
selectRow
row
right mousebutton
rowAtPoint(Point p)
正しい行を見つけるだけではありません。0 または -1 を返します。私はこの問題にほぼ1週間苦労しているので、コードをポン引きしてください:D コードが十分にきれいであることを願っています:D
<--編集済み--> http://painkiller.comlu.com/images/1.jpg
これが問題のスクリーンショットです。
JTable
常に少なくとも 1 つの行があります。任意の行をクリックします (この状況では 2 番目row
)。Row
目的で選ばない。「Lisäävalittu」を押すと、「Add selected
」を意味し、関数selectRow()
が呼び出されます。
/ * *場所
最初に試したe.getPoint()
*e.getPoints() -> java.awt.Point[x=4,y=8]
からの行インデックス番号が返されましたrowAtPoint()
: 0
それから私は試しましたSwingUtilities.convertPoint()
* SwingUtilities.convertPoint(tablePopMenu, e.getPoint(), jTbl);
- >java.awt.Point[x=28,y=10]
返された行インデックス番号からrowAtPoint()
:2
動作しているように見えますが、関数が -1 または 0 をスローすることがあります (そのバグを確認する必要があります)。
<-- -->
私の一日を救ってくれてありがとう!
java - JPopupMenuに垂直スクロールを追加しますか?
JPopupMenu
の項目のリストをスクロールするのと同じように、のメニュー項目をスクロールする方法を追加したいと思いますJComboBox
。
10個のメニュー項目があるとしましょう。一度に5つのメニュー項目のみを表示したいのですが、の下部または上部にある垂直スクロールボタンを使用して、JPopupMenu
リストされていないメニュー項目を表示し、今見たものを非表示にします。
出来ますか?JideSplitButton
クリックするとを表示するJIDESoftwareを使用していJPopupMenu
ます。を配置したコマンドバーのルックアンドフィールを維持しようとしているので、本当に必要JideSplitButton
な場合を除いて、コマンドバーをに置き換えたくありません。JComboBox
java - ポップアップ項目から jTable の行番号を取得する
添付の写真のようにjTableがあります
行を右クリックすると、jPopup が開始され、単一の項目「スレッド停止」が表示されます。
このメニュー項目をクリックして行番号を返したい
これを達成する方法は?
ありがとう。
java - カスタムツリーからJPopupMenuを作成する方法
以下のメソッドは、文字列からカスタムデータツリーを作成します。
多くのサブメニューを持つポップアップメニューを生成するメソッドに取り組んでいます。基本的にこれらのメニューは動的に与えられるので、以下の文字列を使用してサブメニューの作成を処理するアルゴリズムがあります。それを行うために、区切り文字を使用して分割することにより、この文字列をJavaカスタムツリーに変換します。
解析する動的文字列値の例:
String str = "Menu1; Menu2 [; Menu2A; Menu2B [; Menu2B-A; Menu2B-B]]; Menu3;";
現在のメソッドは、以下の構造のようなツリーを作成します。
このツリーに基づいてサブメニューを使用してJPopUpMenuを作成する方法に固執しています。再帰的な方法を使用することを考えていますが、どちらに進むべきかわかりません。
java - キャンバスの下のJPopupMenu表示
キャンバス、いくつかのテキストフィールド、コンテキストメニューがあります。
アプリケーションを起動してキャンバスを右クリックすると、ポップアップメニューが表示されます。しかし、キャンバスを右クリックするよりもテキストフィールド内に何かを書き込むと、ポップアップがキャンバスの後ろに表示されます。
それを修正する方法はありますか?
java - フォーカスを盗むJPopupMenuを停止する
JTextField
ユーザーの入力に一致する結果を提案したいと思っているのです。これらの提案をにJList
含まれるものに表示していますJPopupMenu
。
ただし、を介してプログラムでポップアップメニューを開くshow(Component invoker, int x, int y)
と、フォーカスはから取得されJTextField
ます。
不思議なことに、setVisible(true)
代わりに電話しても、フォーカスは盗まれません。ただし、JPopupMenu
はどのパネルにも接続されておらず、ボックスが開いているときにアプリケーションを最小化すると、ウィンドウにペイントされたままになります。
JTextField
また、フォーカスをusingにリセットしようとしましたrequestFocus()
が、を使用してキャレットの位置を復元する必要があります。後で呼び出すSwingUtilities.invokeLater()
と、ユーザーは既存のコンテンツをいじくり回す/上書きする/または他の予測できないことをします。
私が持っているコードは事実上次のとおりです。
JPopupMenu
誰かが、焦点を合わせながら、プログラムで表示するために降りるのに最適な方法を提案できますJTextField
か?
java - JTreeノードスイングでの右クリックでポップアップボックスを表示
コンポーネントJTree
全体ではなく、ノードのみを右クリックしてポップアップボックスを表示したい。JTree
ユーザーが JTree ノードを右クリックすると、ポップアップ ボックスが表示されます。彼が空白スペースを右クリックしてもJTree
、それは表示されません。JTree
そのために、ノードのみのマウスイベントを検出するにはどうすればよいですか。ネットで何度も検索しましたが、解決策が見つからなかったので、助けてください。
ありがとう。
macos - GUIの外側をクリックしても、JPopUpMenuが非表示/閉じることはありません
Mac OSXにSwingGUIがあり、 JTableがあります。JTableをクリックすると、さまざまなオプションを持つJPopupMenuが表示されます。
問題は、右クリックしてJPopupMenuが表示されることです。突然、GUIの外側をクリックすると、JPopupMenuが開いたままになり、他のウィンドウと重なって、MacbookがログアウトしてもJPopupMenuが開いたままになります。
JPopupMenuの外側をクリックしたときに、openedPopupsをすべて閉じるにはどうすればよいですか。