桌面代做任务清单,MyTodoList

功能迭代

  1. 显示一个可以增加,删除,编辑,开始的todolist.

    里面的任务显示在一个可以滚动的空间里面,所以可以无限地添加

  2. 增加文件存储功能,退出程序后再进入时显示的仍然是是上一次自己输入的任务

  3. 保存当天已经完成的任务,按照json的格式,完成的那一刻就会追加写入结尾,第一行保存完成的任务的数量以及总时间

ui设计

首页界面

点击添加按钮,则会显示添加面板。

选中某个任务之后按下编辑按钮,进入编辑面板

选中某个任务之后按下删除键就能够删除某个任务

选中某个任务之后按下计时键,该任务开始计时,从剩余时间开始计时,每次修改任务信息都会重置计时

模块划分

遇到的问题和解决的技术方案

  1. 在有限的区域内显示更多的任务

    使用滚动面板JScrollPanel。任务作为控件添加到JPanel上,再通过一个以该JPanel为参数构造的JScrollPane实例对该JPanel进行管理,使之成为滚动面板

  2. 实现滚动面板单选。也就是滚动面板中的任务只能选择单个,或者不选。

    也就是如果两次选中同一个任务,则取消选中,如果选中一个新的任务,则旧的任务取消选中。

    使用观察者模式实现该功能。任务获取选中事件后通知任务面板,再由面板决定如何改变他们的选中状态。也就是说任务条是信息发布者,任务滚动面板是观察者

  3. 实现程序主面板和功能面板的切换。也是使用观察者模式。

    功能面板继承基础功能面板,也就是继承一个抽象类,基础功能面板里面有一个退出按钮,获取该按钮点击事件后,功能面板会通知主面板,由主面板决定如何切换界面。

  4. 追加保存当天已经完成的任务,按照json的格式存储每个任务(但是文件本身不是json文件).

    先使用Files获取json文件中所有的字符串,然后更新读取到的完成任务总数和总时间

    第一行第二行分别按照如下格式保存完成任务总数和总花费时间(时间用h:m:s的形式记录)
    total num:xx
    total time:xxx
    

遇到的问题与解决方法

  1. jscrollpane不显示内容

    问题描述:

    基本功能面板正常作用,但是合并使用的时候就会出现滚动
    面板不能正常显示的问题。
    
    如果是先切到主面板,则主面板的界面可以显示。但是切到
    功能面板的时候,功能面板中的界面不能正常显示。

    解决方法:

    放弃直接通过Jpanel更换内容的方式切换界面。
    使用卡片布局切换界面