虽然网上有很多各种各样的番茄时钟,但是我只需要最简单的半小时间隔进行全屏提醒就可以了。但是找来找去,只有一个 daping 软件能够满足我的基本要求,可惜这个软件有广告。
所以为了满足需求,只能动手自己写一个最简单的番茄用一用。
软件功能:
- 工作28分钟,休息2分钟,一直循环。
- 软件在休息的时候进行全屏遮盖强制使用者休息,在工作的时候自动缩小到左上角,也可以最小化。
因为最近刚好在学习JAVA,所以就用JAVA来写。
源代码如下:
package tomatoDemo;
import java.util.Date;
/**
* @author Administrator
*
*/
public class TomatoDemo {
private static final long T_MAX = 28 * 60 * 1000;
private static final long T_MIN = 2 * 60 * 1000;
private static final long T_PERIOD = T_MAX + T_MIN;
/**
* @param args
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub
UI_1 ui1 = new UI_1();
ui1.disp();
long t = new Date().getTime();
long tmax, tmin, tperiod;
while(true)
{
tmax = t + T_MAX;
tmin = tmax + T_MIN;
tperiod = t + T_PERIOD;
while (t < tperiod)
{
t= new Date().getTime();
if (t >= tmax)
{
ui1.setDispMax();
}
if (t >= tmin)
{
ui1.setDispMin();
}
Thread.sleep(1000);
}
}
}
}
package tomatoDemo;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Label;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/**
* @author Administrator
*
*/
public class UI_1 {
private int time;
private Frame f;
private Label l;
private Dimension d;
public void disp()
{
f = new Frame("休息");
d = Toolkit.getDefaultToolkit().getScreenSize();
f.setSize(30, 10);
f.setVisible(true);
l = new Label("休息!");
l.setFont(new Font("consola", 1, 45));
f.add(l);
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public void setDispMax()
{
f.setSize(d.width, d.height);
f.setExtendedState(Frame.NORMAL);
f.setAlwaysOnTop(true);
f.toFront();
f.setAlwaysOnTop(false);
}
public void setDispMin()
{
f.setSize(30, 10);
f.setExtendedState(Frame.NORMAL);
f.setAlwaysOnTop(true);
f.toFront();
f.setAlwaysOnTop(false);
}
}
编译完成以后,使用 exe4j.exe 来生成可执行文件。但是运行之前需要在环境变量里面增加 EXE4J_JAVA_HOME = C:\Program Files\Java\jre1.8.0_111, 当然具体的地址根据自己的机器修改。
源代码也可以到 https://github.com/ramlife/tomato 上面 clone 一下。