1. 统一用一个hideEverything方法隐藏所有 “需要被隐藏的控件” ,在需要的地方调用(如隐藏:Label等)。即在每次需要判断是否显示Label等组件时,调用hideEverything隐藏所有相关组件。
(定一个位置:统一写到最下面“底部”)
2. 需要大规模处理页面信息的定义一个页面方法,初始化页面、重新规划、刷新、再次载入都只使用这个方法和服务器进行交互(IO流长连接部分)
3. page (int类型) 的更新可选在数据库中,当page < 1或 page 页面为空时,回到原来的page,可通过page页面是否变化来提醒用户,是否还有上一页或下一页。当然,也可以选择在客户端判断传过来的第一个数据是否为空,空则(只用于下一页的判断,上一页>0即可)不执行更新。
4. 课程内部页面仿QQ三拼贴思路
FXML1: MenuStudent作为最左侧菜单视图的控制类,该控制类在登录时进行初始化
FXML2: CoursesStudent是中间用于滑动翻找课程的控制类,仅由一个VBox外套一个ScrollPane构成,将各个课程类似于以上的好友选项,写成小视图插入VBox中
FXML3: TempPage暂时充当控制类,什么都不写,只占用空间
之后用hbox.getChildren().addAll(view1, view2, view3);拼贴到一个HBox
(后续视图)
FXML: CoursePage视图,用于占据TempPage的位置,在这里写类似于QQ右侧的功能,该FXML需要将视图、控制类都存储起来,并将数据存储在Local_Data类中,根据Local_Data数据进行交互(点击课程项IO操作,通过小课程项存储的course_id进行更新)。
每个小课程视图只在内部存一个course_id,每次生成的FXML无需获取控制类(太多了,不如简化功能到其他地方),在生成时即做好渲染,只设置一个Button之类的控件,点击调用每个视图的course_id,IO操作更改FXML视图。
4. TEXT 和 Label 两个组件都是固定长度,TEXT写不到会往下书写,Label则会省略多出的字符
5. 统一用initializeFXML命名方法,进行一些FXMLLoader视图的外部初始化
6. 信息修改思路:
在信息 FXML控制类 内部存储一些数据(除了id从Local_Data存取,其他都从内部获取数据,IO交流后(在数据库中更改后)更改Local_Data数据),imagePath设为静态,再设一个静态int用于判别是教师还是学生操作(因为分了Information视图的原因)。
(更改思路2:将静态int设在AvatarReplacement中,开启设置头像窗口时调用该变量,然后在AvatarReplacement判别需要临时修改头像的是哪个Information视图)
(更改思路3,无需静态,临时获取控制类更改int flag) (将临时stage设为静态,保证无论干什么都会被关掉,防止“bug”人乱来)(也可以设为静态,静态的作用应该是,无论创建什么模板,静态的值都是更改后的,不想其他的一样会在作为模板时初始化)