目录
项目需求


项目实现
Part4
需求分析
需求:
4.1 当用户按Control-T键时,系统切换到“目标训练器”视图
4.1.1 视图一次显示一个目标,按照它们存储的顺序
4.1.2 当用户单击目标时,将显示下一个目标
4.1.3 当勾选所有目标器后,系统进入报表视图
4.2 如果用户按下Control-E键,系统立即切换回编辑器视图(不显示报表视图)
4.3 报表视图要收集的数据
用户在第一个目标上的第一次点击就是第一次瞄准试验的开始
在第二个目标上的下一次点击是第一次试验的结束
4.3.1 系统记录每次试验开始和结束之间的经过时间
4.3.2 系统还根据前一个目标之间的距离记录每次试验的难度指数(ID)
4.3.3 以及当前目标和当前目标的宽度
注意:
1.如果集合中有N个目标,将有N-1次试验
2.图表将MT(以毫秒为单位的移动时间)与ID(难度指数)进行对比,并在每次尝试中使用一个点
3.与报表视图没有用户交互
4.当报表视图处于活动状态时,按Control-T键重新启动测试,按Control-E键返回编辑器
代码要求:
1.向InteractionModel中添加代码以跟踪应用程序的模式(例如:EDIT, TEST, REPORT)
2.创建一个额外的发布/订阅接口AppModeListener,以便iModel可以在模式改变时监听
3.MainUI类应该监听应用程序模式的变化,并在适当的时候切换视图
4.为“target trainer”视图创建一个额外的视图类
5.创建一个额外的控制器类来处理与目标训练器视图的交互
6.向InteractionModel中添加数据结构,以跟踪每个目标试验
6.1 例如,创建一个TrialRecord类来存储每次试验的运行时间和ID,并将这些存储在一个列表中
7.创建一个显示摘要图表的报表视图类
7.1 使用JavaFX提供的现有ScatterChart类
7.2 X轴为地块ID, Y轴为MT(即经过时间)
实现:
思路:要做另外两个独立的视图,一个要将编辑时的圆一个一个显示出来,同时记录每两个圆的间隔时间一个做一张静态表单
实现方法:
1.实现第一个视图,包括model层,view层,controller层还有bean类
1.1 model层
第二个视图用到的模型就是从第一个视图中取出来的,所以对BlobModel进行简单的添加即可
BlobModel.java
public class BlobModel {
private List<BlobModelListener> subscribers;
// 测试层监测器
private List<BlobModelListener> testSubscribers;
// 所有存储的圆列表
private List<Blob> blobs;
// 测试层显示的圆
private Blob testBlob;
int count = 0;
// 当前测试层显示的圆的下标 + 1
int testCount = 0;
public void addSubscriber(BlobModelListener sub) {
subscribers.add(sub);
}
private void notifySubscribers() {
subscribers.forEach(s -> s.modelChanged());
}
// 测试层 监测器相关方法
public void addTestSubscriber(BlobModelListener sub) {
testSubscribers.add(sub);
}
// 刷新视图显示
pri

最低0.47元/天 解锁文章
1094

被折叠的 条评论
为什么被折叠?



