弹出窗

走着路睡觉大约 2 分钟

弹出窗

介绍

IDE使用了大量的弹出框,在失去焦点的时候,弹出框会自动关闭。

弹出框可以显示标题,可以选择移动和调整大小(能记住尺寸),能被嵌套(当选择弹出框中的某个元素时,能弹出另一个弹出框)

JBPopupFactoryopen in new window 接口可以根据你需要的组件创建一个弹出框,常用方法如下:

  • createComponentPopupBuilder() :通用,允许显示任何JAVA Swing组件

  • createPopupChooserBuilder() : 用于从 java.util.List 中选择一项或多项。

  • createConfirmation() : 用于从2个选项中选中某一个的时候,执行该选项的操作

  • createActionGroupPopup() : 显示在哪个Action Group里,执行用户选择的操作

操作组

除了方向键外,通过定义 JBPopupFactory.ActionSelectionAidopen in new window 参数可以用另外一种方式来选择一个操作:

SPEEDSEARCH 是效果最好的

  public enum ActionSelectionAid {
    /**
     * 根据弹出框里面action的顺序,按下对应的数字
     */
    NUMBERING,

    /**
     * 和 NUMBERING 一样,但是可以用 A-Z 表示超出 0-9 范围的数字,
     */
    ALPHA_NUMBERING,

    /**
     * 根据action的文字被选择 ,通常使用这个,效果最好
     */
    SPEEDSEARCH,

    /**
     * 根据首字母来选择对应的action
     */
    MNEMONICS
  }

列表弹出框

如果你想创建一个列表弹出框,but don't want to represent the possible choices as actions in an action group(没有理解),你可以直接使用 ListPopupStepopen in new window 接口和 JBPopupFactory.createListPopup()open in new window 方法。 通常你不需要实现 ListPopupStep的全部接口,可以继承 BaseListPopupStepopen in new window 类。 需要重写的主要方法有 getTextFor() (返回要显示的文本) 和 onChosen(当某个选项被选中时调用该方法) 。 通过 onChosen()方法可以返回另一个弹出框,以此实现弹出框的嵌套。

显示弹出框

显示弹出框的时候,你想要让 IntelliJ Platform 自动选择一个好的显示位置,可以调用 showInBestPositionFor()方法,或者通过 showUnderneathOf() 和showInCenterOf() 方法来明确指定显示位置

提示

调用show() 方法会立即返回,不会等到弹出框被关闭

如果你需要在弹出框关闭的时候执行某些操作,你可以使用addListener()方法增加一个监听器,来重写PopupStep.onChosen()方法,或者将事件处理程序附加到弹出窗口的组件上。

public ListPopup createActionGroupPopup(String title,
                                          ActionGroup actionGroup,
                                           DataContext dataContext,
                                          ActionSelectionAid selectionAidMethod,
                                          boolean showDisabledActions);

上次编辑于:
贡献者: zhaojingbo
Loading...