我独立发明了与如何使用菜单创建 JButton中所述相同的解决方案?用于在 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);
}
问题是第一次单击按钮时,似乎 menu_height 没有正确初始化,菜单出现在右下角。但是在随后的点击中它没关系。我能想到的最好的主意是
在小程序启动时显示 JPopupMenu,然后在 1ms 延迟后将其隐藏。
编写我自己的 Swing 菜单组件
任何人都有比第一个更优雅但比第二个更少工作的想法?