這款I(lǐng)DEA插件刷爆了朋友圈,網(wǎng)友:一定是女朋友送的~
往期熱門文章:1、@Autowire和@Resource注解使用的正確姿勢,別再用錯的了?。?/a>2、Java中的Switch都支持String了,為什么不支持long?3、數(shù)據(jù)庫中寫放大問題,大牛居然用“透明壓縮技術(shù)”緩解了4、為什么要放棄 JSP ?5、請謹(jǐn)慎使用Arrays.asList、ArrayList的subList來源 |?juejin.cn/post/6914083794806898695
當(dāng)初年少懵懂,那年夏天填志愿選專業(yè),父母聽其他長輩說選擇計算機專業(yè)好。從那以后,我的身上就有了計院深深的烙印。
從寢室到機房,從機房到圖書館,C、C++、Java、只要是想寫點自己感興趣的東西,一坐就是幾個小時,但那時年輕,起身,收拾,一路小跑會女神,輕輕松松。
現(xiàn)在工作了,毫無意外的做著開發(fā)的工作,長時間久坐。寫代碼一忙起來就忘了起來活動一下,也不怎么喝水。經(jīng)常等到忙完了就感覺腰和腿不舒服。直到今年的體檢報告一下來,才幡然醒悟:沒有一個好身體,就不能好好打工,讓老板過上他自己想要的生活了.
試過用手機提醒自己,但是沒用。
小米手環(huán)的久坐提醒功能也開著,有時候?qū)懘a正入神的,時間到了也就點一下就關(guān)了,還是沒什么作用。
所以我想究竟是我太賴了,還是用Idea寫代碼容易沉迷,總之不可能是改需求有意思。所以元旦節(jié)打算為自己開發(fā)一款小小的Idea防沉迷插件,我叫她【StopCoding】。
她應(yīng)該可以設(shè)置每隔多少分鐘,就彈出一個提醒對話框,一旦對話框彈出來,idea的代碼編輯框就自動失去了焦點,什么都不能操作,到這還不算完,關(guān)鍵是這個對話框得關(guān)不了,并且還顯示著休息倒計時,還有即使我修改了系統(tǒng)時間,這個倒計時也依然有效,除非我打開任務(wù)管理器,關(guān)閉Idea的進程,然后再重新啟動Idea。
但是想一下想,idea都都關(guān)了,還是休息一下吧。
下面就介紹一下她簡單的使用教程和開發(fā)教程
# 安裝使用教程
安裝
1.在idea中直接搜索安裝StopCoding插件(官方已經(jīng)審核通過)

2. 內(nèi)網(wǎng)開發(fā)的小伙伴 可以下載之后進行本地安裝:
https://github.com/jogeen/StopCoding/releases/tag/20210104-V1.0
- 本地安裝:

使用
Step1. 然后在菜單欄中tools->StopCoding

Step2. 設(shè)置適合你的參數(shù)然后保存。

Step3. 然后快樂的Coding吧,再不用擔(dān)心自己會沉迷了。工作時間結(jié)束,她會彈出下框進行提醒,當(dāng)然,這個框是關(guān)不掉的.只有你休息了足夠的時間它才會自動關(guān)閉.

# 開發(fā)教程
這個插件非常的簡約,界面操作也很簡單。所使用的技術(shù)基本上都是java的基礎(chǔ)編程知識。所以小伙伴感興趣的話,一起看看吧。
技術(shù)范圍
- 插件工程的基本結(jié)構(gòu)
- Swing 主要負(fù)責(zé)兩個對話框的交互
- Timer 作為最基本的定時器選擇
插件工程結(jié)構(gòu)

- plugin.xml
- data包
- SettingData,配置信息對應(yīng)model
- DataCenter,作為運行時的數(shù)據(jù)中心,都是些靜態(tài)的全局變量
- service
- TimerService 這個定時計算的核心代碼
- task
- RestTask 休息時的定時任務(wù)
- WorkTask 工作時的定時任務(wù)
- ui
- SettingDialog 設(shè)置信息的對話框
- TipsDialog 休息時提醒的對話框
- StopCodingSettingAction 啟動入口的action
Swing
其實在idea中開發(fā)Swing項目的界面非常簡單。因為idea提供了一系列可視化的操作,以及控件布局的拖拽。接下來就簡單的介紹一下對話框的創(chuàng)建過程和添加事件。
創(chuàng)建對話框
Step1

Step2

Step3

注:這里并沒有詳細(xì)的展開Swing的講解,因為界面的這個東西,需要大家多去自己實踐。這里就不做手冊式的贅述了。
添加事件
其實,剛才創(chuàng)建的這個對話框里的兩個按鈕都是默認(rèn)已經(jīng)創(chuàng)建好了點擊事件的。
public class TestDialog extends JDialog {private JPanel contentPane;private JButton buttonOK;private JButton buttonCancel;public TestDialog() {setContentPane(contentPane);setModal(true);getRootPane().setDefaultButton(buttonOK);buttonOK.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {onOK();}}); //這是給OK按鈕綁定點擊事件的監(jiān)聽器buttonCancel.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {onCancel();}});//這是給取消按鈕綁定點擊事件的監(jiān)聽器//其他代碼}
當(dāng)然我們也可以其它任何控件去創(chuàng)建不同的事件監(jiān)聽器。這里可以通過界面操作創(chuàng)建很多種監(jiān)聽器,只要你需要,就可以使用。
step1

step2

Timer定時器
在這個插件里面,需要用到定時的功能,同時去計算公國和休息的時間。所以使用JDK自帶的Timer,非常的方便。下面我Timer的常用的api放在這里,就清楚它的使用了。
- 構(gòu)造方法

- 成員防范

- 主要是schedule去添加一個定時任務(wù),和使用cancel去取消任務(wù)停止定時器。
# 最后
相信有了這些基本介紹,感謝興趣的小伙伴想去看看源碼和嘗試自己寫一個小插件就沒什么大問題了。不說了,我得休息了。希望這個插件能幫到作為程序員得你,和這篇文章對你有一點點啟發(fā)。當(dāng)然麻煩小伙伴點個贊,鼓勵一下打工人。
源碼地址:https://github.com/jogeen/StopCoding
最近熱文閱讀:
1、@Autowire和@Resource注解使用的正確姿勢,別再用錯的了??!2、Java中的Switch都支持String了,為什么不支持long?3、請謹(jǐn)慎使用Arrays.asList、ArrayList的subList4、人臉識別“抓”錯了人,他在監(jiān)獄呆了 10 天5、騷操作 !IDEA 防止寫代碼沉迷插件 !6、這四種情況下,才是考慮分庫分表的時候!7、求求你別再用offset和limit分頁了8、10 個最好用的重構(gòu)小技巧排行榜,你用過哪些?9、淺談用不好緩存的幾個受傷場景!10、高并發(fā)下接口冪等性解決方案關(guān)注公眾號,你想要的Java都在這里
評論
圖片
表情
