是什么决定了 java.awt.PopupMenu 中出现的订单商品?

What determines the order items appear in java.awt.PopupMenu?

我以为是它们的添加顺序,但出于某种奇怪的原因,"Exit" 项出现在子菜单上方。这是我的代码:

gram._ni.setPopupMenu(new PopupMenu());
gram._ni.getPopupMenu().add("Re-Read");
gram._ni.getPopupMenu().add("Pronunciations");
gram._ni.getPopupMenu().add("Pause");
gram._ni.getPopupMenu().add("Stop");
gram._ni.getPopupMenu().add(gram._voiceMenu);
gram._ni.getPopupMenu().add("Exit");

_ni 是一个托盘图标。 (当这是一个 C#.Net 程序时,曾经是 "NotifyIcon") gram 是 "Program" class 的一个实例,其中包含我的主要方法。

vcr 说 ha 无法重现这个问题,所以这是我的系统信息:

OpenJDK 版本“1.8.0_121”OpenJDK 运行时环境(build 1.8.0_121-b14)OpenJDK 64 位服务器 VM(build 25.121-b14,混合模式) Fedora Core 24,内核 4.9.13-100.fc24.x86_64 Xfce 4.12

原来我的代码中还有另一个:

 gram._ni.getPopupMenu().add(gram._voiceMenu);

我没有注意到,因为添加相同的对象会移动对象而不是添加副本。