【发布时间】:2012-06-02 07:35:44
【问题描述】:
我正在尝试为文件浏览器制作一组导航按钮。我想要这样,如果用户单击专用的历史按钮,就会出现一个 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());
}
});
所有组件均已添加并正确显示,调试显示它们注册了事件,但没有出现菜单。
【问题讨论】:
-
很好,但为了尽快获得更好的帮助,请发帖 SSCCE。
-
信息不足。 histPopupMenu 里面有什么?再次,SSCCE 请!
-
@Supuhstar 1) 你的概念可能会让用户感到沮丧 2) 有可能,但不是这样(重写 LeftMouseButton 需要一堆代码) 3) 发布 SSCCE 4) JFileBrowres 是复合 JComponent,你可以使用已实现的 JButton 提取 JPanel 和/或添加/替换为自己的 5)可能 JPopup 不是弹出窗口的正确容器
标签: java swing mouseevent popupmenu jpopupmenu