查看原文
其他

这款 IDEA 插件刷爆朋友圈,网友:防止沉迷“搬砖”,用起来有点酸爽~

Java精选 2022-08-09

点击上方“Java精选”,选择“设为星标”

别问别人为什么,多问自己凭什么!

下方有惊喜,留言必回,有问必答!

每一天进步一点点,是成功的开始...

前言
当初年少懵懂,那年夏天填志愿选专业,父母听其他长辈说选择计算机专业好。从那以后,我的身上就有了计院深深的烙印。从寝室到机房,从机房到图书馆,C、C++、Java、只要是想写点自己感兴趣的东西,一坐就是几个小时,但那时年轻,起身,收拾,一路小跑会女神,轻轻松松。现在工作了,毫无意外的做着开发的工作,长时间久坐。写代码一忙起来就忘了起来活动一下,也不怎么喝水。经常等到忙完了就感觉腰和腿不舒服。直到今年的体检报告一下来,才幡然醒悟:没有一个好身体,就不能好好打工,让老板过上他自己想要的生活了.
试过用手机提醒自己,但是没用。小米手环的久坐提醒功能也开着,有时候写代码正入神的,时间到了也就点一下就关了,还是没什么作用。所以我想究竟是我太赖了,还是用 IDEA 写代码容易沉迷,总之不可能是改需求有意思。所以元旦节打算为自己开发一款小小的 IDEA 防沉迷插件,我叫她【StopCoding】。她应该可以设置每隔多少分钟,就弹出一个提醒对话框,一旦对话框弹出来,IDEA 的代码编辑框就自动失去了焦点,什么都不能操作,到这还不算完,关键是这个对话框得关不了,并且还显示着休息倒计时,还有即使我修改了系统时间,这个倒计时也依然有效,除非我打开任务管理器,关闭 IDEA 的进程,然后再重新启动 IDEA。但是想一下想,IDEA 都都关了,还是休息一下吧。
下面就介绍一下她简单的使用教程和开发教程
安装使用教程

安装

  1. 在 IDEA 中直接搜索安装 StopCoding 插件(官方已经审核通过)

2. 内网开发的小伙伴 可以下载之后进行本地安装 下载地址
  • 本地安装:

使用

  • Step1. 然后在菜单栏中 tools->StopCoding

  • Step2. 设置适合你的参数然后保存。
  • Step3. 然后快乐的 Coding 吧,再不用担心自己会沉迷了。工作时间结束,她会弹出下框进行提醒,当然,这个框是关不掉的.只有你休息了足够的时间它才会自动关闭.
开发教程
这个插件非常的简约,界面操作也很简单。所使用的技术基本上都是 java 的基础编程知识。所以小伙伴感兴趣的话,一起看看吧。

推荐下几个月熬夜整理的近 10000+ 面试资料大全:https://gitee.com/yoodb/ebooks

技术范围

  • 插件工程的基本结构
  • 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://juejin.cn/post/6914083794806898695

公众号“Java精选”所发表内容注明来源的,版权归原出处所有(无法查证版权的或者未注明出处的均来自网络,系转载,转载的目的在于传递更多信息,版权属于原作者。如有侵权,请联系,笔者会第一时间删除处理!
------ THE END ------

精品资料,超赞福利!


3000+ 道 BAT 大厂面试题在线刷,最新、最全 Java 面试题!

☆ Java进阶学习资料
 Java自学、进阶路线图免费领

期往精选  点击标题可跳转

石锤!字节跳动违反 Apache 2.0 许可证:火山引擎重新发布 Apache SkyWalking!

百度员工 WIKI 发布“女优一览表”遭开除!自诉原因:想转岗鉴黄师...

Vue 涉及国家安全漏洞?尤雨溪亲自回应!

携程将推“3+2”工作模式:每周到岗3天,在家 2 天,你羡慕吗?

推荐 2 个 Spring Boot 工作流项目,轻松搞定工作流!

不可思议!乌克兰国防军队的系统账号密码居然是 admin 和 123456...

这样 PDF 的技术简历,HR根本不想看,谈何到面试官手中?

微博被曝大面积裁员?冲上热搜了!!!

 技术交流群!

最近有很多人问,有没有读者交流群!想知道如何加入?方式很简单,兴趣相投的朋友,只需要点击下方卡片,回复“加群”,即可无套路入交流群!

文章有帮助的话,在看,转发吧!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存