上一篇:JBPopup的創建
下一篇:ProjectViewPopupMenu的創建
插件已發布
1,在Plugins中搜索CCLines,進行下載安裝;
2,源碼在Github中開源下載;
3,搜索不到的朋友,可以升級一下idea后再嘗試,因為插件有跟idea的版本關聯;
Settings的動態效果圖,如下:
以上的效果圖就是我們今天要講的主要內容,喜歡的朋友請支持一下~~~
Settings配置頁是什么?為什么要使用?
配置頁面是什么,可能看圖片會比較直觀一點,如下:
在做完基礎插件后,我們可能需要對部分配置開放給用戶自己去使用,所有我們今天的文章講的,就是怎么在這個Settings配置頁面中,添加我們自己插件所需要的配置頁。
創建配置頁
1,
創建Java類后去實現(implements)Configurable接口,代碼如下:
/**
* 設置界面 2017/3/20 14:12.
*/
public class Settings implements Configurable {
private JPanel mMainPanel;
private JButton buttonDel; // 刪除按鈕 2017/3/20 14:20
private JButton buttonAdd; // 添加按鈕 2017/3/20 14:21
private JTable table1;
private DefaultTableModel mDefaultTableModel;
private java.util.List<TypeEntity> _lstType; // 類型 2017/3/21 13:49
private boolean _isModify = false; // 是否已經修改 2017/3/21 13:52
private int _curRow = -1; // 當前行 2017/3/27 15:17
private String _curSuffix = null; // 當前選擇的后綴名 2017/3/27 15:22
private java.util.List<String> _lstDels;
/**
* 在settings中顯示的名稱 2017/3/20 14:12
* @return 名稱
*/
@Nls
@Override
public String getDisplayName() {
return "Compute Code Lines";
}
@Nullable
@Override
public String getHelpTopic() {
return null;
}
/**
* 初始化控件 2017/3/20 14:19
* @return
*/
@Nullable
@Override
public JComponent createComponent() {
return null;
}
/**
* 是否修改 2017/3/20 14:12
* @return true 激活apply按鈕
*/
@Override
public boolean isModified() {
return false;
}
/**
* 點擊【apply】、【OK】時,調用 2017/3/20 14:12
* @throws ConfigurationException
*/
@Override
public void apply() throws ConfigurationException {
}
/**
* 點擊【Reset】時,調用 2017/3/20 14:13
*/
@Override
public void reset() {
}
/**
* 一定要實現,否則在Android Studio中會報錯 2017/4/4 17:40
*/
@Override
public void disposeUIResources() {
}
}
PS
對實現Configurable后,重寫的幾個方法,上面代碼都有注釋,可以看看各個方法的作用。
2,plugin.xml添加信息
在<extensions>中添加如下信息:
<!--擴展組件注冊 要是用到applicationConfigurable即項目配置等就在這里注冊-->
<extensions defaultExtensionNs="com.intellij">
<!-- 自定義配置界面 2017/3/20 14:05 -->
<applicationConfigurable instance="settings.Settings"/>
</extensions>
3,
創建一個Form的界面布局文件,綁定上面的Settings類,布局的結構如下圖:
PS
我做的是一個代碼統計工具,我的想法是打算開放統計類型,讓用戶自己去配置,所以我添加兩個按鈕,【刪除】、【添加】,還有一個表格去承載數據展示,比較簡單。
4,Table控件的使用:
首先得在Form頁面對JTable控件的【Custom Create】勾選,如圖:
a,創建DefaultTableModel模型,代碼如下:
mDefaultTableModel = new DefaultTableModel() {
@Override
public Class<?> getColumnClass(int columnIndex) {
if (columnIndex != 0)
return super.getColumnClass(columnIndex);
return Boolean.class; // 第一列為復選框 2017/3/20 15:26
}
};
b,初始化DefaultTableModel數據,代碼如下:
this._lstType = ComputeType.getTypes(); // 獲取顯示統計類型 2017/3/21 13:49
if (this._lstType.size() == 0)
return;
// 創建兩列 2017/3/20 14:38
Object[][] object = new Object[this._lstType.size()][2];
int i = 0;
for (TypeEntity entity:this._lstType) {
object[i][0] = entity.isCheck(); // 直接設置boolean,CheckBox可直接設置
object[i][1] = entity.getType();
i++;
}
tableModel.setDataVector(object, new Object[]{"Box", "Type"});
c,創建JTable,代碼如下:
table1 = new JTable(mDefaultTableModel) {
public void tableChanged(TableModelEvent e) {
super.tableChanged(e);
repaint();
}
@Override
public boolean isCellEditable(int row, int column) {
return column == 0;
}
};
d,設置表格的表頭、列的大小,代碼如下(注釋切記記得看,我被坑了一下):
// 設置表頭高度
table1.getTableHeader().setPreferredSize(new Dimension(table1.getTableHeader().getWidth(), 35));
// 設置兩列各自寬度,有多少列,setPreferredWidth都得設置,才能生效 2017/3/20 15:54
table1.getColumnModel().getColumn(0).setPreferredWidth(35);
table1.getColumnModel().getColumn(0).setMaxWidth(30); // 設置最大值,防止窗口放大縮小時,動態變化 2017/3/20 15:55
table1.getColumnModel().getColumn(1).setPreferredWidth(465);
// 設置行的高度
table1.setRowHeight(25);
e,添加JTable點擊事件,獲取點擊的具體行、列,代碼如下:
// 添加點擊事件 2017/3/20 16:02
table1.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
if (e.getClickCount() == 1) { // 獲取點擊的復選框 2017/3/20 16:02
int columnIndex = table1.columnAtPoint(e.getPoint()); //獲取點擊的列
int rowIndex = table1.rowAtPoint(e.getPoint()); //獲取點擊的行
_curRow = rowIndex;
if (columnIndex == 0) {
_isModify = true; // 標志修改,激活apply 2017/3/21 13:53
boolean isCheck = (boolean) table1.getValueAt(rowIndex, 0);
String type = (String) table1.getValueAt(rowIndex, 1);
}
}
}
});
PS
到這里的話,我們的Settings配置頁與其中包含的表格控件的創建與使用就結束了。
演示效果
中間紅色區域就是我們的創建的Form布局界面。上面圖片顯示,我配置了統計Python、Javascript的文件類型,統計效果如下:
如果覺得有點模糊的朋友,不妨去看下前面幾篇文章,我都是一步一步來講,來實現對應的界面以及功能的。
其實只要界面做出來了,實現邏輯還是比較簡單的。我這篇文章主要解決的問題在我插件問題集2中的,第1到4的問題。
今天我們要講的Settings配置頁就告一段落了,到這里能講的東西也快講完了,畢竟我自己想要做的代碼統計插件也做完了,大概還會持續更新兩三篇吧~~~
今天就到這里,謝謝支持~~~