[解決済み] Java Swingで右クリックのコンテキストメニューを作成するには?
2022-05-17 22:48:59
質問
現在、右クリックのコンテキストメニューを作成するために、新しい
JMenu
をインスタンス化し、その位置をマウスの位置に設定することで右クリックコンテキスト メニューを作成しています。もっと良い方法はないでしょうか?
どのように解決するのですか?
おそらく、手動で
setVisible(true)
を呼び出しているのでしょう。 これは、メニューに厄介なバグの動作を引き起こす可能性があります。
は
show(Component, int x, int x)
メソッドは、必要なすべてのこと (マウスオーバー時にハイライト表示し、必要に応じてポップアップを閉じる) を処理し、ここで
setVisible(true)
を使用すると、追加の動作を追加することなく、メニューを表示するだけです。
右クリックによるポップアップメニューを作るには、単に
JPopupMenu
.
class PopUpDemo extends JPopupMenu {
JMenuItem anItem;
public PopUpDemo() {
anItem = new JMenuItem("Click Me!");
add(anItem);
}
}
あとは、カスタムの
MouseListener
を追加するだけです。
class PopClickListener extends MouseAdapter {
public void mousePressed(MouseEvent e) {
if (e.isPopupTrigger())
doPop(e);
}
public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger())
doPop(e);
}
private void doPop(MouseEvent e) {
PopUpDemo menu = new PopUpDemo();
menu.show(e.getComponent(), e.getX(), e.getY());
}
}
// Then on your component(s)
component.addMouseListener(new PopClickListener());
もちろん、チュートリアルには があり、もう少し踏み込んだ の説明があります。
注意してください。
ポップアップメニューがユーザーがクリックした位置から離れた場所に表示されることに気づいたら、ポップアップメニューの表示位置を指定するために
e.getXOnScreen()
と
e.getYOnScreen()
メソッドでxとyの座標を指定します。
関連
-
無効な文字定数
-
swagger2 モデルが表示されない モデルが見つからない @ApiModel アノテーションが表示されない問題
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
-
[解決済み] ウェブページにカスタム右クリックメニューを追加するには?
-
[解決済み】JSP 2を使用して、JSPファイル内のJavaコードを回避するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Javaでよくある構文エラー
-
SLF4J: クラス・パスに複数のSLF4Jバインディングが含まれています。
-
プロジェクトの依存関係を解決できない。
-
-bash: java: コマンドが見つからない 解決方法
-
Junitのユニットテストはjava.lang.Testを報告します。
-
java.sql.SQLException: 結果セットの開始前
-
java send https request prompt java.security.cert.について。
-
Javaがエラーで実行される、選択が起動できない、最近起動したものがない
-
アクセス制限の解決方法: ---- in Java
-
htmlとwordの相互変換の実装(画像あり)