android jb,Android Studio插件开发5--JBPopup创建

本文介绍了如何在Android Studio插件开发中使用JBPopup控件创建弹出菜单,包括安装插件、源码获取、解决版本兼容问题,并详细展示了创建过程,包括添加鼠标触发事件、显示清除和全选功能。通过实例演示和效果对比,学习者可掌握如何在ToolWindow中集成弹出菜单功能。
摘要由CSDN通过智能技术生成

插件已发布

1,在Plugins中搜索CCLines,进行下载安装;

2,源码在Github中开源下载;

3,搜索不到的朋友,可以升级一下idea后再尝试,因为插件有跟idea的版本关联;

JBPopup的演示效果图

16607caffb63

popup效果

以上的gif动态图展示的内容就是今天我们要讲的主要内容,喜欢的记得支持一下~~~

JBPopup是什么?为什么要使用?

了解上一篇我们要创建使用ToolWindow控件的场景后(如果不是太清楚的朋友可以点击上面的链接,查看ToolWindow的创建),今天我们讲一讲什么是JBPopup控件。

其实看这个名字,我们可以很直观的了解到,JBPopup控件是一个弹出菜单控件。如果想要直接看效果的朋友,可以直接打开Android studio中底部的Tool Buttons中的【Android Monitor】(或者任意其它ToolWindows控件),然后鼠标对准中间区域,点击右键即可看到弹出一个菜单。

这就是我们今天要实现的目标。

那为什么要使用这个?我在上一篇中创建ToolWindow控件来展示所有的Log信息,但既然有所展示,就需要有所清除,所以最简单的功能就是来实现一个【清除】功能。

需要解决的问题

今天我讲这篇,我主要需要解决的问题就两个,就是我在插件问题集中的第7、8个问题,今天这篇技术文章讲完,第一个问题集也就全部结束了。如果有接触插件开发的朋友们,碰到问题的话,可以参考我所碰到的问题,看看能不能有所帮助。

创建JBPopup

上一篇我们在ToolWindow中创建了一个JTextArea控件来展示Log信息,如下:

16607caffb63

控件关系

添加触发事件

那我们首先要添加一个鼠标触发事件,作为触发创建JBPopup的入口,在【ToolFactoryCompute.createToolWindowContent】的方法中添加鼠标事件,代码如下:

// 添加鼠标事件 2017/3/18 21:12

txtContent.addMouseListener(new MouseListener() {

@Override

public void mouseClicked(MouseEvent e) {

// 在此添加触发事件 2017/3/18 21:12

}

@Override

public void mousePressed(MouseEvent e) {

}

@Override

public void mouseReleased(MouseEvent e) {

}

@Override

public void mouseEntered(MouseEvent e) {

}

@Override

public void mouseExited(MouseEvent e) {

}

});

在【mouseClicked】中处理事件

在这里我们首先需要在【mouseClicked】中对鼠标点击事件做判断,判断当前的鼠标点击事件是否为鼠标右键点击,代码如下:

@Override

public void mouseClicked(MouseEvent e) {

// 在此添加触发事件 2017/3/18 21:12

if (e.getButton() == 3) { // 鼠标右键 2017/3/18 21:12

}

}

创建、显示JBPopup

截获鼠标右键事件后,创建、显示JBPopup控件,代码如下:

// 添加右键菜单的内容 2017/3/18 21:12

JBList list = new JBList<>();

String[] title = new String[2];

title[0] = " Select All";

title[1] = " Clear All";

list.setListData(title); // 设置数据 2017/3/18 21:13

// 创建菜单 2017/3/18 21:13

JBPopup popup = new PopupChooserBuilder(list)

.setItemChoosenCallback(new Runnable() { // 添加点击项的监听事件 2017/3/18 21:13

@Override

public void run() {

String value = list.getSelectedValue();

if (" Clear All".equals(value)) {

txtContent.setText("");

} else if (" Select All".equals(value)) {

txtContent.selectAll();

}

}

}).createPopup();

// 设置大小 2017/3/18 21:13

Dimension dimension = popup.getContent().getPreferredSize();

popup.setSize(new Dimension(150, dimension.height));

// 显示 2017/3/18 21:25

popup.show(new RelativePoint(e)); // 传入e,获取位置进行显示 2017/3/19 09:48

我们以上代码实现了两个功能,一个是【Select All】、一个是【Clear All】。

演示效果图对比

到这里,JBPopup控件也就创建完了,效果图如下:

16607caffb63

JBPopup效果图

用了两下JBPopup,我对比了其它的效果,觉得效果怪怪的,比如,Android Studio中Monitor的效果图如下:

16607caffb63

其它效果图

我发现我创建的JBPopup总是会默认第一项,后来我使用了如下代码,进行清除:

list.clearSelection();

// 添加鼠标进入List事件 2017/3/18 21:25

list.addMouseListener(new MouseAdapter() {

@Override

public void mouseEntered(MouseEvent e) {

super.mouseEntered(e);

}

@Override

public void mouseExited(MouseEvent e) {

super.mouseExited(e);

list.clearSelection();

}

});

效果图2

16607caffb63

效果图2

清除选中效果了,但是剩下一个高亮边框一直存在。后来想了一下,认定这个应该是一个焦点事件触发的高亮边框,顺着这个思路找到了如下代码:

list.setFocusable(false);

效果图3

16607caffb63

效果图3

好了,到这里我们今天要讲的JBPopup控件的创建与使用到这里就告一段落了,如果需要了解更多的创建方式,可以查看官方文档--Popup创建。

结合今天完成的这一篇和前面4篇文章,我们已经可以简单的开发一个可以使用的插件,去实现我们想要做的功能。

但是我要做的事还没有完结,在这里再一次说明一下,我要做的是一个代码统计工具,后续将继续添加功能、继续更新文章、继续记录开发过程中所遇到的问题,所解决的问题。

今天就到这里,谢谢支持~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值