FallInLove
送你的天数计时,不用担心忘记在一起多少天啦
(效果图)
【注】:如果只是想要使用这个程序而不是拓展这个程序,那么接下来的使用说明就足够了。
这里的字符串"2021-01-07"
是你和你对象关系确定的那一天,所以修改为那一天即可。
这里的显示文字可以显示为你想要的文字,中间拼接的计算,是天数,按要求修改即可。
这个窗体,鼠标按住任何地方都可以拖拽移动至想要移动的地方,默认是在屏幕的顶部(可修改)。
这个窗体,关闭按钮的边框被设置为了null,位置为"",因此看不到关闭按钮,只要点击右上角就会关闭。
这个源文件里写了两个类,其中一个是为了获取在一起的毫秒数,支持天数的计算的。
这个程序整体来说比较简单,但是需要一定的Java基础,需要对于单例设计模式了解,JavaSwing了解,SimpleDateFormat和Calendar和Date类了解,这样更容易看懂。
在编辑器种运行可能有些不方便,每次都要打开编辑器才能运行,这里提供一种在cmd窗口内运行的方式:
- 首先:Win + R 输入cmd
我们可以看到当前默认的路径是C:\Users\Inspiration.DW
,在你的电脑内可能是C:\Users\${name}
,总之找到这个路径,将FallInLove.java
放入其中,如图所示:
- 其次:在小黑框中输入:javac FallInLove.java
如果出现这样的问题
,说明字符集不对。解决方案:通过记事本的方式打开FallInLove.java这个文件,文件 —> 另存为—>将编码改为ANSI
- 最后在小黑框中重新输入:javac FallInLove.java
,如果出现这样的情况:
在输入:java FallInLove
,这样就可以看到效果了。
【注】
成功运行过一次之后,下次再运行的时候就需要输入
javac FallInLove.java
了,
直接输入java FallInLove
就可以了。
我们默认的是已经配置好了Java环境的,这里不做多说。
还可以将这个Java源文件打成exe文件,在桌面生成快捷方式,这里不做多说。
源代码:
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class FallInLove extends JFrame {
// 设置单例
private static volatile FallInLove fallInLove;
private boolean isDraging;
private int xx, yy;
// 获取当前时间的毫秒数
private Long now = System.currentTimeMillis();
// 这里使用字符串参数
private Long startTime = GetStartMills.getStartMills("2021-01-07");
private FallInLove() {
// 这里只需要执行一个简单的功能点
// 就是展示我和甜的关系确定的时间
// 我们从新的一天开始, 就是1.7号
// 添加关闭按钮,由于设置了无边框,所以不显示
// 想要关闭,点击右上角即可
JButton bt_close = new JButton("");
bt_close.setBackground(Color.pink);
bt_close.setBorder(null);
bt_close.setBounds(1140, 0, 60, 30);
this.add(bt_close);
// 添加关闭按钮监听
bt_close.addActionListener(e -> {
dispose();
});
// 添加一个面板,展示时间
JLabel content = new JLabel(" 和甜在一起的第" +
( ( (now - startTime) / 1000 / 60 / 60 / 24) + 1)
+ "天");
content.setFont(new Font("华文琥珀", Font.BOLD, 42));
content.setSize(1200, 100);
this.add(content);
// 实现无边框拖拽界面
// 监听最初位置
this.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
isDraging = true;
xx = e.getX();
yy = e.getY();
}
public void mouseReleased(MouseEvent e) {
isDraging = false;
}
});
// 时刻更新鼠标位置
this.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
// 修改位置
if (isDraging) {
int left = getLocation().x;
int top = getLocation().y;
setLocation(left + e.getX() - xx, top + e.getY() - yy);
}
}
});
this.setLayout(null);
this.getContentPane().setBackground(Color.pink);
this.setBounds(500, 0, 1200, 100);
this.setUndecorated(true);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
// 设计一个方法,用来返回天数
private String calDays() {
return "";
}
public static FallInLove getInstance() {
if (fallInLove == null) {
synchronized (FallInLove.class) {
if (fallInLove == null) {
fallInLove = new FallInLove();
}
}
}
return fallInLove;
}
public static void main(String[] args) {
FallInLove.getInstance();
}
}
//==========================================================================================
/** 为了不多占用一个文件,将另一个类放在一起写了*/
/**
* 这个类是为了获取刚开始和你对象在一起的时间的毫秒数的。
*/
class GetStartMills {
private GetStartMills() {
}
// 注意使用这种方法,月份是从0开始的,2021,0,7 -> 2021-1-7
public static Long getStartMills(int year, int month, int date) {
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(year, month, date);
Long mills = calendar.getTimeInMillis();
return mills;
}
// 虽然没有上一种简单,但是可以传入的是我们正常认知的时间,2021-01-07 -> 2021-1-7
// 但是必须按照yyyy-mm-dd这个模板来书写
public static Long getStartMills(String startTime) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
Date date = null;
try {
date = sdf.parse(startTime);
} catch (ParseException e) {
e.printStackTrace();
}
Long mills = date.getTime();
return mills;
}
// // 主函数测试
// public static void main(String[] args) {
// System.out.println(
// "数字参数:" +
// (System.currentTimeMillis() - getStartMills(2021, 0, 7)) / 1000 / 60 / 60 / 24
// );
//
// System.out.println(
// "字符串参数:" +
// (System.currentTimeMillis() - getStartMills("2021-01-07")) / 1000 / 60 / 60 / 24
// );
// /*
// 2021.1.7 - 2021.1.10,应该是 7,8,9,10这4天
// 但是根据运行结果:数字参数:3 字符串参数:3
// 其原因在于除法计算的四舍五入,所以我们应该 + 1
// */
// }
}