0

我有一个与 JPopupMenu 相关的问题,也许有人可以帮助我。

据我所见,当您按下 JMenu(这是在 JMenuBar 中)或将鼠标悬停在 JMenu 上(如果这是在 JPopupMenu 中)时,JPopupMenu 会打开。

所以,我有一个包含 JMenu 的 JMenuBar(我们称之为“文件”)。当我按下“文件”时,会打开一个 JPopupMenu,其中包含一个 JMenuItem 和另一个 JMenu(我们称之为“属性”)。有什么方法可以将与文件 JMenu 中的行为相同的行为应用于属性 JMenu:仅在用户单击它而不将鼠标悬停在其上时打开 JPopup?

我知道这是试图避免 JMenu 的正常行为,但是你们中的任何人都知道这是否可能?

4

1 回答 1

1

这是非常具体的事情,我不知道是否有很多人这样做。:) 无论如何,如果有人需要,我会为此留下一个解决方案。

首先重要的是要注意这些更改是在 UI 类中完成的。BasicMenuItemUI 和 BasicMenuUI 都有一个内部类 Handler 来处理鼠标事件。BasicMenuUI 中的内部类 Handler 扩展了 BasicMenuItemUI 中的内部类 Handler,因为它们是私有的和匿名的(分别)很难更改代码。但是,在这两种情况下,都有一个受保护的处理程序,它指向我在上一段中谈到的处理程序。

因此,作为一种解决方案,我在自己的 MyOwnBasicMenuUI 和 MyOwnBasicMenuItemUI 实现中扩展了这些受保护的处理程序,并应用了自己的行为。现在我有一个 JMenu,它只在用户单击它时打开,并且在用户单击其他地方之前保持打开状态。如果有人想要更多细节,我可以提供。

谢谢

于 2012-02-01T15:44:32.660 回答