主控制类,项目小结,实时更新UI

1.用户的信息进行更改,上传请求,服务端进行直接操作数据库,返回请求,客户端根据返回的请求,进行更新界面。

按照我前一篇所说的,写好了主控制类,和第二线程接受服务端的信息,这时候就可以在接受信息,根据信息,不断利用主控之类中的找到控制类,然后再使用控制类中的方法。

主控制类的用处:

1:当你切换布局时,在初始化了主控类中的元素时,你可以直接使用,如果你没有主控制,切换布局时,new一个布局,你这样你混乱,更新ui界面也无法更新。

2:如果你是使用的new一个布局,你前一个布局就会便成为空,因为没有东西指向它了,他会自动释放内存,后面切换回来就错了

2.分析以前为什么经常错误

以前对各个组件Controller的认识不够深刻,以前当我进行点击其它按钮,切换pane时,我会柑橘fxml文件重新new一个出来,这样会有什么问题?

以前的fxml文件被覆盖,程序会释放这个内存,然后切换来,切换去,就不断的就行newFXML的Controller文件了。

现在使用把初始化的布局,设为静态变量,当这个被赋值后,可以随意调用,且安全。更新ui时也更加方便。

3.样例展示

类如:客户端的第二线程,处理请求的:

如下,根据请求来进行调用主控制类中的方法(这里在UI线程中进行调用),方便且高效。

 

在FXMLController中

 不在UI线程中继续执行主程序。

4.方法:删除flowPane其中的子组件

在进行添加组件时,直接进行赋值上一个独一无二的标识,后面删除时,就找到这个标识,然后进行删除

例如:

//添加子节点 
public void addClass(MyClass myClass){
        FXMLLoader myclassBoxFxml = null;
        Parent myclassbox;
        try {
            myclassBoxFxml = new FXMLLoader(getClass().getResource("/resource/smallfxml/StudentCourseVbox.fxml"));
            myclassbox = myclassBoxFxml.load();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        StudentCourseVbox studentCourseVbox = myclassBoxFxml.getController();
        studentCourseVbox.setMyClass(myClass);
        myclassbox.setId(String.valueOf(myClass.getId()));
        
        flowPane.getChildren().add(myclassbox);
    }

    //删除子节点
    public  void  deleteClass(int classId){
        for (Node node : flowPane.getChildren()) {
            // 检查节点是否是VBox并且ID匹配
            if (node instanceof VBox && node.getId().equals(String.valueOf(classId))) {
                // 从FlowPane中移除找到的VBox
                flowPane.getChildren().remove(node);
                break; // 删除后退出循环
            }
        }

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值