洞察管理小程序实例的关键在于实现跨平台能力与数据安全,如何利用FinClip助力企业在数字化转型中既合规又高效?
1208
2023-02-28
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
实际效果
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);
}
效果如下
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, xXykxfosfs1);
// 获取焦点的组件
Component component = event.getDataContext().getData(PlatformDataKeys.CONTEXT_COMPONENT);
// 组件下方显示 popup
popup.showUnderneathOf(component);
}
event.getDataContext().getData(PlatformDataKeys.CONTEXT_COMPONENT); 会返回获取焦点的组件
比如
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();
}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~