我是猿人,一个热爱技术、热爱编程的IT猿。技术是开源的,知识是共享的!
写作是对自己学习的总结和记录,如果您对 Java、分布式、微服务、中间件、Spring Boot、Spring Cloud等技术感兴趣,可以关注我的动态,我们一起学习,一起成长!
用知识改变命运,让家人过上更好的生活,互联网人一家亲!
---公众号「猿码天地」
Java知识学堂:https://gitee.com/zhangbw666/it-knowledge
你多学一样本事,就少说一句求人的话,现在的努力,是为了以后的不求别人,实力是最强的底气。记住,活着不是靠泪水博得同情,而是靠汗水赢得掌声。——《写给程序员朋友》
来源:juejin.cn/post/6914083794806898695
-
前言
-
安装使用教程
-
安装
-
使用
-
-
开发教程
-
技术范围
-
插件工程结构
-
Swing
-
Timer定时器
-
最后
-
![](https://img-blog.csdnimg.cn/img_convert/eccb8ad85b068c2026f04b1d75176e50.png)
前言
今天跟大家分享一款IDEA 防沉迷插件,现在工作了,毫无意外的做着开发的工作,长时间久坐。写代码一忙起来就忘了起来活动一下,一坐就是几个小时,也不怎么喝水。经常等到忙完了就感觉腰和腿不舒服。直到今年的体检报告一下来,才幡然醒悟,没有一个好身体,就不能好好打工,让老板过上他自己想要的生活了。
试过用手机提醒自己,但是没用。小米手环的久坐提醒功能也开着,有时候写代码正入神的,时间到了也就点一下就关了,还是没什么作用。所以我想究竟是我太赖了,还是用Idea写代码容易沉迷,总之不可能是改需求有意思。所以元旦节打算为自己开发一款小小的Idea防沉迷插件,我叫她【StopCoding】。
她应该可以设置每隔多少分钟,就弹出一个提醒对话框,一旦对话框弹出来,idea的代码编辑框就自动失去了焦点,什么都不能操作,到这还不算完,关键是这个对话框得关不了,并且还显示着休息倒计时,还有即使我修改了系统时间,这个倒计时也依然有效,除非我打开任务管理器,关闭Idea的进程,然后再重新启动Idea。但是想一下想,idea都都关了,还是休息一下吧。
下面就介绍一下她简单的使用教程和开发教程
安装使用教程
安装
-
在idea中直接搜索安装StopCoding插件(官方已经审核通过)
2. 内网开发的小伙伴 可以下载之后进行本地安装 下载地址
-
本地安装:
![](https://img-blog.csdnimg.cn/img_convert/d1f5c4da4c483254383c8cc6e03d091b.png)
使用
-
Step1. 然后在菜单栏中tools->StopCoding
![](https://img-blog.csdnimg.cn/img_convert/e8fb123356dfd424c31076b14aaa2316.png)
-
Step2. 设置适合你的参数然后保存。
![](https://img-blog.csdnimg.cn/img_convert/7528c3f716f805cacccabea8dffe9ad1.png)
-
Step3. 然后快乐的Coding吧,再不用担心自己会沉迷了。工作时间结束,她会弹出下框进行提醒,当然,这个框是关不掉的.只有你休息了足够的时间它才会自动关闭.
![](https://img-blog.csdnimg.cn/img_convert/5f545126cb927fa299027165579416c6.png)
开发教程
这个插件非常的简约,界面操作也很简单。所使用的技术基本上都是java的基础编程知识。所以小伙伴感兴趣的话,一起看看吧。
技术范围
-
插件工程的基本结构
-
Swing 主要负责两个对话框的交互
-
Timer 作为最基本的定时器选择
插件工程结构
![](https://img-blog.csdnimg.cn/img_convert/da9e0243181123db1b448566ab5cb081.png)
-
plugin.xml
这是插件工程的核心配置文件,里面每一项的解释,可以参考第一篇的介绍核心配置文件说明。
-
data包
-
SettingData,配置信息对应model
-
DataCenter,作为运行时的数据中心,都是些静态的全局变量
-
-
service
-
TimerService 这个定时计算的核心代码
-
-
task
-
RestTask 休息时的定时任务
-
WorkTask 工作时的定时任务
-
-
ui
-
SettingDialog 设置信息的对话框
-
TipsDialog 休息时提醒的对话框
-
-
StopCodingSettingAction 启动入口的action
Swing
其实在idea中开发Swing项目的界面非常简单。因为idea提供了一系列可视化的操作,以及控件布局的拖拽。接下来就简单的介绍一下对话框的创建过程和添加事件。
创建对话框
-
Step1
![](https://img-blog.csdnimg.cn/img_convert/02cf7299266bc29afb241f395b09c287.png)
-
Step2
![](https://img-blog.csdnimg.cn/img_convert/f8f6dd0f979ac82145ff37dd7cf2c0e3.png)
-
Step3
![](https://img-blog.csdnimg.cn/img_convert/8afff7df47231a59a577cf09ed6cec16.png)
-
注:这里并没有详细的展开Swing的讲解,因为界面的这个东西,需要大家多去自己实践。这里就不做手册式的赘述了。
添加事件
其实,刚才创建的这个对话框里的两个按钮都是默认已经创建好了点击事件的。
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按钮绑定点击事件的监听器
buttonCancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
onCancel();
}
});//这是给取消按钮绑定点击事件的监听器
//其他代码
}
当然我们也可以其它任何控件去创建不同的事件监听器。这里可以通过界面操作创建很多种监听器,只要你需要,就可以使用。
-
step1
![](https://img-blog.csdnimg.cn/img_convert/b20541c6d6173fe135368062f775d7bc.png)
-
step2
![](https://img-blog.csdnimg.cn/img_convert/a76b74ee71e678baef1cea6e06eca148.png)
Timer定时器
在这个插件里面,需要用到定时的功能,同时去计算公国和休息的时间。所以使用JDK自带的Timer,非常的方便。下面我Timer的常用的api放在这里,就清楚它的使用了。
-
构造方法
![](https://img-blog.csdnimg.cn/img_convert/ceab88e074bb172c021994f3b16bbd73.png)
-
成员防范
![](https://img-blog.csdnimg.cn/img_convert/1a0218a1693487690f453270076bf839.png)
-
主要是schedule去添加一个定时任务,和使用cancel去取消任务停止定时器。
最后
相信有了这些基本介绍,感谢兴趣的小伙伴想去看看源码和尝试自己写一个小插件就没什么大问题了。不说了,我得休息了。希望这个插件能帮到作为程序员得你,和这篇文章对你有一点点启发。当然麻烦小伙伴点个赞,鼓励一下打工人。
福利一:月薪3万Java优秀简历模板
简历是对你过往学习和工作的一个总结,一份好的简历容易给人留下深刻印象,更容易被企业发现,创造更多的就业机会。优秀的简历可以把你推销给优秀的企业,看看别人的优秀简历范文,让自己的简历更加优秀吧。
获取方式:
微信搜索「猿码天地」或者扫描下面的二维码,关注后回复关键字「简历」即可获取!
福利二:全网最全一线大厂Java笔试面试题
面试题涵盖了Spring核心知识、SpringMVC、SpirngBoot、SpringCloud、JVM、数据库、常用消息组件Kafka、RabbitMQ、分布式、微服务组件Eureka、Ribbon、Config、Feign、Nacos、Zookeeper等、SQL优化、常用服务器Tomcat、Nginx、多线程、高并发等等。
部分截图:
获取方式:
微信搜索「猿码天地」或者扫描下面的二维码,关注后回复关键字「BAT面试」即可获取!
福利三:1000+本Java开发精华电子书
猿人从事Java开发多年,从最初的小白,一步步通过自己不断的学习、摸索,终于走上了码农这条没有回头的路。学习是无止境的,有时零零散散的学习资料难以将我们的知识成体系的串联起来。为此,为了让大家在学习Java的道路上成系统的学习,少走弯路,猿人为大家整理了1000+本Java开发精华电子书,毕竟现在电子书也是挺贵的,哈哈,希望能给大家带来帮助。
电子书涵盖:Java入门、并发编程、底层、常用框架、性能优化、设计模式、工具、计算机网络、操作系统、数据库、数据结构与算法、大数据、架构设计、Linux知识、面试、扩展、管理、容器化技术、云计算、微服务、领域设计等方方面面,猿人还会给持续更新。
部分目录:
获取方式:
第一种:微信搜索「猿码天地」或者扫描下面的二维码,关注后回复关键字「电子书」即可获取!
第二种:Gitee:https://gitee.com/zhangbw666/java-books
希望程序员朋友能认真学习,根据自身需要获取对应的电子书,学习是永无止境的。
你多学一样本事,就少说一句求人的话,现在的努力,是为了以后的不求别人,实力是最强的底气。记住,活着不是靠泪水博得同情,而是靠汗水赢得掌声。——《写给程序员朋友》