骚操作 !IDEA 防止写代码沉迷插件 !
大家好,我是磊哥。
今天,磊哥,跟大家,分享一款:IDEA 防沉迷插件,现在工作了,毫无意外的做着开发的工作,长时间久坐。写代码一忙起来就忘了起来活动一下,一坐就是几个小时,也不怎么喝水。经常等到忙完了就感觉腰和腿不舒服。直到今年的体检报告一下来,才幡然醒悟,没有一个好身体,就不能好好打工,让老板过上他自己想要的生活了。
所以元旦节打算为自己开发一款小小的 IDEA 防沉迷插件,我叫她【StopCoding】。
下面就介绍一下她简单的使用教程和开发教程
安装使用教程
安装
1、在 IDEA 中直接搜索安装 StopCoding 插件(官方已经审核通过)
2、内网开发的小伙伴 可以下载之后进行本地安装 下载地址
本地安装:
使用
Step1. 然后在菜单栏中 tools->StopCoding
Step2. 设置适合你的参数然后保存。
Step3. 然后快乐的 Coding 吧,再不用担心自己会沉迷了。工作时间结束,她会弹出下框进行提醒,当然,这个框是关不掉的.只有你休息了足够的时间它才会自动关闭.
开发教程
这个插件非常的简约,界面操作也很简单。所使用的技术基本上都是 java 的基础编程知识。所以小伙伴感兴趣的话,一起看看吧。
技术范围
插件工程的基本结构 Swing 主要负责两个对话框的交互 Timer 作为最基本的定时器选择
插件工程结构
plugin.xml
这是插件工程的核心配置文件,里面每一项的解释,可以参考第一篇的介绍核心配置文件说明。
data
SettingData
:配置信息对应 model
DataCenter
:作为运行时的数据中心,都是些静态的全局变量
service
TimerService
:这个定时计算的核心代码
task
RestTask
:休息时的定时任务
WorkTask
:工作时的定时任务
ui
SettingDialog
:设置信息的对话框
TipsDialog
: 休息时提醒的对话框StopCodingSettingAction
:启动入口的 action
Swing
其实在 IDEA 中开发 Swing 项目的界面非常简单。因为 IDEA 提供了一系列可视化的操作,以及控件布局的拖拽。接下来就简单的介绍一下对话框的创建过程和添加事件。
创建对话框
Step1
Step2
Step3
注:这里并没有详细的展开 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
step2
Timer 定时器
在这个插件里面,需要用到定时的功能,同时去计算公国和休息的时间。所以使用 JDK 自带的 Timer,非常的方便。下面我 Timer 的常用的 api 放在这里,就清楚它的使用了。
构造方法
成员防范
主要是 schedule 去添加一个定时任务,和使用 cancel 去取消任务停止定时器。
最后
相信有了这些基本介绍,感谢兴趣的小伙伴想去看看源码和尝试自己写一个小插件就没什么大问题了。不说了,我得休息了。希望这个插件能帮到作为程序员得你,和这篇文章对你有一点点启发。当然麻烦小伙伴点个赞,鼓励一下打工人。
源码地址:https://github.com/jogeen/StopCoding
近期技术热文
1、语句中 where 条件后 写上 1=1 是什么意思!
2、各种陷进,被 JDK 方法,给坑哭了!!
3、Java 对象不使用,要赋值为 null 吗?
4、面试官问:Redis变慢了,如何快速排查?