Java 如何在按钮上方显示JPOppMenu(如旧版Windows中的“开始”菜单)?

Java 如何在按钮上方显示JPOppMenu(如旧版Windows中的“开始”菜单)?,java,swing,layout,applet,jpopupmenu,Java,Swing,Layout,Applet,Jpopupmenu,我独立发明了与中描述的相同的解决方案,用于在Swing小程序中创建弹出菜单。但是,popup.show()中指定的坐标是弹出菜单左上角的位置。我希望菜单的左下角与按钮的左上角重合。这与旧版本Windows用于“开始”菜单相对于“开始”按钮的布局相同 我所拥有的是: JPopupMenu popup_menu; JButton button; public void actionPerformed(ActionEvent e) { int menu_height = this.popup

我独立发明了与中描述的相同的解决方案,用于在Swing小程序中创建弹出菜单。但是,popup.show()中指定的坐标是弹出菜单左上角的位置。我希望菜单的左下角与按钮的左上角重合。这与旧版本Windows用于“开始”菜单相对于“开始”按钮的布局相同

我所拥有的是:

JPopupMenu popup_menu;
JButton button;

public void actionPerformed(ActionEvent e)
{
    int menu_height = this.popup_menu.getHeight();
    this.popup_menu.show(this.button, 0, -menu_height);
}
问题是第一次单击按钮时,似乎菜单高度没有正确初始化,菜单显示在右下角。然而,在随后的点击中,这是可以的。我能想出的最好的主意是

  • 小程序启动时显示JPopupMenu,然后在1毫秒延迟后隐藏它

  • 编写自己的Swing菜单组件


任何人都有比第一个更优雅但比第二个更省力的想法吗?

试着将
这个.弹出式菜单.getHeight()
改为
这个.弹出式菜单.getPreferredSize().height
@JoshM如果你认为这样行得通,写一个答案。你可能会找到一些帮助