弹出窗
弹出窗
介绍
IDE使用了大量的弹出框,在失去焦点的时候,弹出框会自动关闭。
弹出框可以显示标题,可以选择移动和调整大小(能记住尺寸),能被嵌套(当选择弹出框中的某个元素时,能弹出另一个弹出框)
JBPopupFactory 接口可以根据你需要的组件创建一个弹出框,常用方法如下:
createComponentPopupBuilder() :通用,允许显示任何JAVA Swing组件
createPopupChooserBuilder() : 用于从 java.util.List 中选择一项或多项。
createConfirmation() : 用于从2个选项中选中某一个的时候,执行该选项的操作
createActionGroupPopup() : 显示在哪个Action Group里,执行用户选择的操作
操作组
除了方向键外,通过定义 JBPopupFactory.ActionSelectionAid 参数可以用另外一种方式来选择一个操作:
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(没有理解),你可以直接使用 ListPopupStep 接口和 JBPopupFactory.createListPopup() 方法。 通常你不需要实现 ListPopupStep的全部接口,可以继承 BaseListPopupStep 类。 需要重写的主要方法有 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);