idea关闭插件弹窗_Idea插件开发弹出框,idea

前言

IntelliJ平台的用户界面广泛使用弹出窗口,即没有chrome(显式关闭按钮)的半模式窗口,在焦点丢失时自动消失。在插件中使用这些控件可以确保插件和IDE其他部分之间的用户体验一致。

弹出窗口可以选择性地显示标题,也可以移动和调整大小(并支持记住它们的大小),并且可以嵌套(当选择一个项目时显示另一个弹出窗口)。

一、JBPopupFactory

JBPopupFactory 是idea 提供给用户自定义窗口的接口,比较常见的方法如下

createComponentPopupBuilder() 允许您在弹出窗口中显示任何

Swing

组件。

createPopupChooserBuilder() 创建一个多选/单选框

createConfirmation() 创建一个确认框

createActionGroupPopup() 创建一个显示方法组的窗口,选中会执行方法。

创建弹出窗口后,需要通过调用show() 方法之一来显示它。您可以通过调用showInBestPositionFor() 让IntelliJ平台根据上下文自动选择位置,或者通过showUnderneathOf() 和ShowInCenter() 等方法显式指定位置。

show() 方法立即返回,不等待弹出窗口关闭。

如果需要在弹出窗口关闭时执行某些操作,可以使用addListener() 方法将侦听器附加到它,然后重写弹出试的方法,例如onChosen(),或在弹出窗口中将事件处理程序附加到您自己的组件。

二、demo

showInBestPositionFor

Shows the popup in the position most appropriate for the specified data context.

在最适合指定数据上下文的位置显示弹出窗口。

acaction 定义按钮功能

public class TextBoxes extends AnAction {

public TextBoxes() {

super("MYSQL_COLUMN_ADD_PRO");

}

@Override

public void actionPerformed(@NotNull AnActionEvent event) {

// 获取 JBPopupFactory

JBPopupFactory instance = JBPopupFactory.getInstance();

// 创建需要执行的任务

Runnable runnable = new Runnable() {

@Override

public void run() {

Messages.showMessageDialog("aaa", "hello", Messages.getInformationIcon());

}

};

ListPopup popup = instance.createConfirmation("hello", runnable, 1);

popup.showInBestPositionFor(event.getDataContext());

}

}

plugins.xml

org.example.myPlugins

MyPlugin

lieying

first test plugin

实际效果

show()

Shows the popup at the specified point.

显示指定点的弹出窗口。

@Override

public void actionPerformed(@NotNull AnActionEvent event) {

// 获取 JBPopupFactory

JBPopupFactory instance = JBPopupFactory.getInstance();

// 创建需要执行的任务

Runnable runnable = new Runnable() {

@Override

public void run() {

Messages.showMessageDialog("aaa", "hello", Messages.getInformationIcon());

}

};

ListPopup popup = instance.createConfirmation("hello", runnable, 1);

// 固定指定一个点显示

Point point = new Point(200,300);

RelativePoint relativePoint = new RelativePoint(point);

popup.show(relativePoint);

}

效果如下

showUnderneathOf()

Shows the popup at the bottom left corner of the specified component.

显示指定组件左下角的弹出窗口。

@Override

public void actionPerformed(@NotNull AnActionEvent event) {

// 获取 JBPopupFactory

JBPopupFactory instance = JBPopupFactory.getInstance();

// 创建需要执行的任务

Runnable runnable = new Runnable() {

@Override

public void run() {

Messages.showMessageDialog("aaa", "hello", Messages.getInformationIcon());

}

};

ListPopup popup = instance.createConfirmation("hello", runnable, 1);

// 获取焦点的组件

Component component = event.getDataContext().getData(PlatformDataKeys.CONTEXT_COMPONENT);

// 组件下方显示 popup

popup.showUnderneathOf(component);

}

event.getDataContext().getData(PlatformDataKeys.CONTEXT_COMPONENT); 会返回获取焦点的组件

比如

showInFocusCenter

Shows the popups in the center of currently focused component

在获取焦点组件的中间弹出popup

@Override

public void actionPerformed(@NotNull AnActionEvent event) {

// 获取 JBPopupFactory

JBPopupFactory instance = JBPopupFactory.getInstance();

// 创建需要执行的任务

Runnable runnable = new Runnable() {

@Override

public void run() {

Messages.showMessageDialog("aaa", "hello", Messages.getInformationIcon());

}

};

ListPopup popup = instance.createConfirmation("hello", runnable, 1);

popup.showInFocusCenter();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值