上一篇:ToolWindow的創(chuàng)建
下一篇:Settings配置頁的創(chuàng)建
插件已發(fā)布
1想虎,在Plugins中搜索CCLines翩隧,進行下載安裝堡掏;
2购城,源碼在Github中開源下載吕座;
3,搜索不到的朋友工猜,可以升級一下idea后再嘗試米诉,因為插件有跟idea的版本關聯(lián);
JBPopup的演示效果圖
以上的gif動態(tài)圖展示的內(nèi)容就是今天我們要講的主要內(nèi)容篷帅,喜歡的記得支持一下~~~
JBPopup是什么?為什么要使用拴泌?
了解上一篇我們要創(chuàng)建使用ToolWindow控件的場景后(如果不是太清楚的朋友可以點擊上面的鏈接魏身,查看ToolWindow的創(chuàng)建),今天我們講一講什么是JBPopup控件蚪腐。
其實看這個名字箭昵,我們可以很直觀的了解到,JBPopup控件是一個彈出菜單控件回季。如果想要直接看效果的朋友家制,可以直接打開Android studio中底部的Tool Buttons中的【Android Monitor】(或者任意其它ToolWindows控件),然后鼠標對準中間區(qū)域泡一,點擊右鍵即可看到彈出一個菜單颤殴。
這就是我們今天要實現(xiàn)的目標。
那為什么要使用這個鼻忠?我在上一篇中創(chuàng)建ToolWindow控件來展示所有的Log信息涵但,但既然有所展示,就需要有所清除帖蔓,所以最簡單的功能就是來實現(xiàn)一個【清除】功能矮瘟。
需要解決的問題
今天我講這篇,我主要需要解決的問題就兩個塑娇,就是我在插件問題集中的第7澈侠、8個問題,今天這篇技術文章講完埋酬,第一個問題集也就全部結束了哨啃。如果有接觸插件開發(fā)的朋友們,碰到問題的話奇瘦,可以參考我所碰到的問題棘催,看看能不能有所幫助。
創(chuàng)建JBPopup
上一篇我們在ToolWindow中創(chuàng)建了一個JTextArea控件來展示Log信息耳标,如下:
添加觸發(fā)事件
那我們首先要添加一個鼠標觸發(fā)事件醇坝,作為觸發(fā)創(chuàng)建JBPopup的入口,在【ToolFactoryCompute.createToolWindowContent】的方法中添加鼠標事件,代碼如下:
// 添加鼠標事件 2017/3/18 21:12
txtContent.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
// 在此添加觸發(fā)事件 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) {
// 在此添加觸發(fā)事件 2017/3/18 21:12
if (e.getButton() == 3) { // 鼠標右鍵 2017/3/18 21:12
}
}
創(chuàng)建、顯示JBPopup
截獲鼠標右鍵事件后宋距,創(chuàng)建轴踱、顯示JBPopup控件,代碼如下:
// 添加右鍵菜單的內(nèi)容 2017/3/18 21:12
JBList<String> list = new JBList<>();
String[] title = new String[2];
title[0] = " Select All";
title[1] = " Clear All";
list.setListData(title); // 設置數(shù)據(jù) 2017/3/18 21:13
// 創(chuàng)建菜單 2017/3/18 21:13
JBPopup popup = new PopupChooserBuilder(list)
.setItemChoosenCallback(new Runnable() { // 添加點擊項的監(jiān)聽事件 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
我們以上代碼實現(xiàn)了兩個功能淫僻,一個是【Select All】、一個是【Clear All】壶唤。
演示效果圖對比
到這里雳灵,JBPopup控件也就創(chuàng)建完了,效果圖如下:
用了兩下JBPopup闸盔,我對比了其它的效果悯辙,覺得效果怪怪的,比如迎吵,Android Studio中Monitor的效果圖如下:
我發(fā)現(xiàn)我創(chuàng)建的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
清除選中效果了击费,但是剩下一個高亮邊框一直存在拢蛋。后來想了一下,認定這個應該是一個焦點事件觸發(fā)的高亮邊框荡灾,順著這個思路找到了如下代碼:
list.setFocusable(false);
效果圖3
好了瓤狐,到這里我們今天要講的JBPopup控件的創(chuàng)建與使用到這里就告一段落了,如果需要了解更多的創(chuàng)建方式批幌,可以查看官方文檔--Popup創(chuàng)建础锐。
結合今天完成的這一篇和前面4篇文章,我們已經(jīng)可以簡單的開發(fā)一個可以使用的插件荧缘,去實現(xiàn)我們想要做的功能皆警。
但是我要做的事還沒有完結,在這里再一次說明一下截粗,我要做的是一個代碼統(tǒng)計工具信姓,后續(xù)將繼續(xù)添加功能、繼續(xù)更新文章绸罗、繼續(xù)記錄開發(fā)過程中所遇到的問題意推,所解決的問題。
今天就到這里珊蟀,謝謝支持~~~