FallInLove

zhoudbw

共 5213字,需浏览 11分钟

 · 2021-03-02

FallInLove

送你的天数计时,不用担心忘记在一起多少天啦

a8f654977f9570658f3a1fe7d60e31e0.webp

(效果图)


【注】:如果只是想要使用这个程序而不是拓展这个程序,那么接下来的使用说明就足够了。

  1. c9f2dc007b4eaa0015fd38b3d279c54b.webp

这里的字符串"2021-01-07"是你和你对象关系确定的那一天,所以修改为那一天即可。

  1. f7a206372d3aaedd866ccad5fb295f2e.webp

这里的显示文字可以显示为你想要的文字,中间拼接的计算,是天数,按要求修改即可。

  1. a8f654977f9570658f3a1fe7d60e31e0.webp

这个窗体,鼠标按住任何地方都可以拖拽移动至想要移动的地方,默认是在屏幕的顶部(可修改)。

这个窗体,关闭按钮的边框被设置为了null,位置为"",因此看不到关闭按钮,只要点击右上角就会关闭。

  1. 5daa2c5432cc57be58ab2ffa03f2601b.webp

这个源文件里写了两个类,其中一个是为了获取在一起的毫秒数,支持天数的计算的。

  1. 这个程序整体来说比较简单,但是需要一定的Java基础,需要对于单例设计模式了解,JavaSwing了解,SimpleDateFormat和Calendar和Date类了解,这样更容易看懂。

  2. 在编辑器种运行可能有些不方便,每次都要打开编辑器才能运行,这里提供一种在cmd窗口内运行的方式:

- 首先:Win + R 输入cmd

8c2e3620bca729e8427308f85153314b.webp

我们可以看到当前默认的路径是C:\Users\Inspiration.DW,在你的电脑内可能是C:\Users\${name},总之找到这个路径,将FallInLove.java放入其中,如图所示:

d0c1240f4afefaa53155abbcd10d50f9.webp

- 其次:在小黑框中输入:javac FallInLove.java如果出现这样的问题

d94e56c14c8db012c9517c1df4887b4a.webp

,说明字符集不对。解决方案:通过记事本的方式打开FallInLove.java这个文件,文件 —> 另存为—>将编码改为ANSI

36fa6b19e8ddd42c738bad2d4ee4a349.webp

- 最后在小黑框中重新输入:javac FallInLove.java,如果出现这样的情况:

35d5c43b41ce84c916b07004adfd63f1.webp

在输入:java FallInLove,这样就可以看到效果了。

b7ec819cc5c6c1f0db2df1c75514774f.webp



【注】

  1. 成功运行过一次之后,下次再运行的时候就需要输入javac FallInLove.java了,

直接输入java FallInLove就可以了。

  1. 我们默认的是已经配置好了Java环境的,这里不做多说。

  2. 还可以将这个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
//       */
//   }
}



浏览 47
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报