我独立发明了与How to create a JButton with a menu?中描述的相同的解决方案,用于在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未正确初始化,菜单显示在右下角。但是在随后的点击中它没关系。我能提出的最好的想法是
显示applet启动时的JPopupMenu,然后在1ms延迟后隐藏它。
编写自己的Swing菜单组件
任何人都有比第一个更优雅的想法但比第二个更少的工作?