介绍
IntelliJ 平台用户界面广泛使用弹出窗口 - 没有镶边(显式关闭按钮)并在失去焦点时自动消失的半模态窗口。在您的插件中使用这些控件可确保您的插件与 IDE 的其余部分之间的用户体验一致。
弹出窗口可以选择显示标题,可选择移动和调整大小(并支持记住它们的大小),并且可以嵌套(选择项目时显示另一个弹出窗口)。
该JBPopupFactory界面允许您创建显示不同类型组件的弹出窗口,具体取决于您的特定需求。最常用的方法是:
方法
描述
createComponentPopupBuilder()
通用,允许显示任何Swing组件。
createPopupChooserBuilder()
用于从普通的java.util.List.
createConfirmation()
用于在两个选项之间进行选择,并根据选择的选项执行不同的操作。
createActionGroupPopup()
显示操作组中的操作并执行用户选择的操作。
行动小组
除了普通的箭头键之外,操作组弹出窗口还支持从键盘选择操作的不同方式。通过在JBPopupFactory.ActionSelectionAid枚举中传递其中一个常量,您可以选择是否可以通过按下与其序号对应的键、键入部分文本(快速搜索)或按下助记符来选择动作。对于具有固定项目集的弹出窗口,推荐的选择方法是顺序编号;对于具有可变且可能包含大量项目的弹出窗口,速度搜索通常效果最佳。
列出弹出窗口
如果您需要创建一个比简单的更灵活JList但又不想将可能的选择表示为操作组中的操作的类似列表的弹出窗口,您可以直接使用ListPopupStep接口和JBPopupFactory.createListPopup()方法。通常你不需要实现整个接口;相反,您可以从BaseListPopupStep类派生。覆盖的关键方法是getTextFor()(返回要为项目显示的文本)和onChosen()(在选择项目时调用)。通过从该onChosen()方法返回一个新的弹出步骤,您可以实现分层(嵌套)弹出窗口。
显示弹出窗口
创建弹出窗口后,您需要通过调用其中一种show()方法来显示它。您可以通过调用 让 IntelliJ 平台根据上下文自动选择位置,或通过和showInBestPositionFor()等方法显式指定位置。showUnderneathOf()showInCenterOf()
这些show()方法立即返回,并且不等待弹出窗口关闭。
如果您需要在弹出窗口关闭时执行某些操作,您可以使用该addListener()方法将侦听器附加到它,覆盖弹出内容的方法,例如PopupStep.onChosen(),或者将事件处理程序附加到弹出窗口中您自己的组件。