ファイル ブラウザ用の一連のナビゲーション ボタンを作成しようとしています。ユーザーが専用の履歴ボタンをクリックすると、JPopupMenu が表示されるようにします。ただし、ユーザーが右クリックまたはカーソルを [戻る] または [進む] ボタンにドラッグしたときにも、まったく同じメニューが表示されるようにします。異なるジェスチャの複数の GUI コンポーネントに対してまったく同じ JPopupMenu (コピーではなく、まったく同じもの) を表示するにはどうすればよいですか?
これまでのところ、次のことを試しました。
histButton.addMouseListener(new MouseAdapter()
{
@Override public void mouseClicked(MouseEvent e)
{
showPopup(e);
}
@Override public void mouseDragged(MouseEvent e)
{
showPopup(e);
}
private void showPopup(MouseEvent e)
{
histPopupMenu.show(e.getComponent(), e.getX(), e.getY());
}
});
forwardButton.addMouseListener(new MouseAdapter()
{
@Override public void mouseClicked(MouseEvent e)
{
if (e.isPopupTrigger())
showPopup(e);
}
@Override public void mouseDragged(MouseEvent e)
{
showPopup(e);
}
private void showPopup(MouseEvent e)
{
histPopupMenu.show(e.getComponent(), e.getX(), e.getY());
}
});
backButton.addMouseListener(new MouseAdapter()
{
@Override public void mouseClicked(MouseEvent e)
{
if (e.isPopupTrigger())
showPopup(e);
}
@Override public void mouseDragged(MouseEvent e)
{
showPopup(e);
}
private void showPopup(MouseEvent e)
{
histPopupMenu.show(e.getComponent(), e.getX(), e.getY());
}
});
すべてのコンポーネントが追加され、正しく表示されます。デバッグにより、イベントが登録されていることが示されますが、メニューは表示されません。