我正在尝试为文件浏览器制作一组导航按钮。我想要这样,如果用户点击专用的历史按钮,就会出现一个 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());
}
});
所有组件均已添加并正确显示,调试显示它们注册了事件,但没有出现菜单。