idea关闭插件弹窗_idea插件开发之弹出框的代码实例

本文详细介绍了如何在IntelliJ IDEA插件开发中使用弹出窗口,包括JBPopupFactory的常用方法如createComponentPopupBuilder、createPopupChooserBuilder等,以及如何展示弹出窗口,如showInBestPositionFor、showUnderneathOf和showInFocusCenter,并提供了相应的代码示例。
摘要由CSDN通过智能技术生成

这篇文章主要介绍了idea插件开发之弹出框的示例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

前言

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

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

一、JBPopupFactory

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

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

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

createConfirmation() 创建一个确认框

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

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

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

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

二、demo

1.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

实际效果

b53db0bb7a719e45db4f6c6aefda98f9.png

2.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);

}

效果如下

013c7b62435ecd118931e7140607d201.png

3.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); 会返回获取焦点的组件

比如

d9c4d2205717e5f53168ac0f1b2bbaf7.png

4.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();

}

2513a53c58894650a5abf0bbe1c4fc99.png

相关文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值