当前位置: 首页 > news >正文

javafx场景切换,网络编程踩坑

1.Javafx使用fxml进行场景的切换,组件的切换

在此之外,时常疑惑,多个fxml有各自的多个controller类,如何能够点击某个按钮切换场景呢,后来我发现,FXMLLoader.load()就是返回一个组件,进行执行load()时,相当于new了一个对象,就相当于是一个组件,点击按钮就可以直接new 一个scene并把Parent放进scene里面。

这里有个问题就是,我的触发事件是写在controller类里,这样我进行切换场景时,舞台不见了,所以这里就要把舞台传递过来

法一:

这里可以在controller类中私有一个Stage,然后再在initialize()方法里初始化stage,这个方法是最先执行的方法(在构造方法后面),这样就可以在后面点击事件时,进行切换场景

法二:

这里也可以在原来最初 的Stage类中,把变量Stage 静态化,这样后面controller文件,就可以直接在controller里面定义一个stage,然后直接找到静态的赋值。

例如这里:我使用静态变量,直接在controller里面赋值

private BorderPane borderPane = homepageMain.borderPane;

2. 网络编程中进行传递的可序列化的类Serializable(易错点)

 使用tcp通信时,在服务端和客户端在进行通信上,

这里我们知道两边通信必须要保持一致的通信标准才行,我们定义相同的类,但是这个类中前面会有个导包的,比如这个,

这个也必须一样,两个项目要想进行传递,这个必须一样,这个必须一样

这里就是大坑,要想实现通信,这个也要一样!!!

3.用户进行界面操作,制作界面的组件切换,和几种使用组件方法

在用户登录后,在应用的主页,许多事件都是切换其中一些组件,而不是直接切换场景,这里我们可以想到FXMLLoader文件返回的时Parent,点击事件直接进行切换布局中的组件,在这里进行组件的切换和加入很可能会变化场景中的布局,这里可以使用一些绑定,让组件的相对位置能够保持自己想要的位置。

这里是使用boardpane可以较好的控制,有一些比较好点的控制组件的方式

比如,一个rectangle不能添加文字,我们可以在rectangle外面包裹一个Grop,然后再在Grop里面再添加一个label,就可以在rectangle里添加文字了

就可以写出这样的效果

4.使用线程池,长连接处理客户端的请求

public class myRunnable implements Runnable {private Socket socket;public myRunnable(Socket socket){this.socket = socket;}@Overridepublic void run () {//这里处理io流异常,try {while (!socket.isClosed()) {        //这里socket如果一直存在,
//就一直使用这个socket执行用户的请求,长连接System.out.println(socket);Message requestMessage = SocketUtil.getSocketUtil().getMessage(socket);if(requestMessage == null){System.out.println("message 为空");break;}switch (requestMessage.getMessageType()) {case MessageType.send_mail_request -> {}//各种解决请求}}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 力扣题解( 让字符串成为回文串的最少插入次数)
  • C++知识要点总结笔记
  • 关于Qt Creator 使用Qt Quick的Design模式设置
  • 【运维】docker批量删除临时镜像(两种方式)
  • Postman下载及使用说明
  • 人工智能算法工程师(中级)课程9-PyTorch神经网络之全连接神经网络实战与代码详解
  • 网络安全设备——EDR
  • 【Linux】Ubuntu配置JDK环境、MySQL环境
  • 无障碍全免费上手智能体:Autogen Studio结合Deepseek Coder打造一款AI旅游规划师
  • Vuforia AR篇(八)— AR塔防上篇
  • Wireshark 对 https 请求抓包并展示为明文
  • matlab R2016b安装cplex12.6,测试时cplex出现出现内部错误的解决方法
  • “论软件维护方法及其应用”写作框架,软考高级论文,系统架构设计师论文
  • 前端挑战:Tkinter布局与设计【三种布局】
  • 基于STM32设计的家庭智能健康监测系统(局域网)(185)
  • 【css3】浏览器内核及其兼容性
  • 3.7、@ResponseBody 和 @RestController
  • Java读取Properties文件的六种方法
  • Leetcode 27 Remove Element
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • mysql 5.6 原生Online DDL解析
  • 给github项目添加CI badge
  • 简单数学运算程序(不定期更新)
  • 聊聊flink的TableFactory
  • 思考 CSS 架构
  • 为什么要用IPython/Jupyter?
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​补​充​经​纬​恒​润​一​面​
  • #162 (Div. 2)
  • #QT(串口助手-界面)
  • ()、[]、{}、(())、[[]]命令替换
  • (152)时序收敛--->(02)时序收敛二
  • (6)添加vue-cookie
  • (k8s)Kubernetes 从0到1容器编排之旅
  • (回溯) LeetCode 131. 分割回文串
  • (六)c52学习之旅-独立按键
  • (六)软件测试分工
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转载)利用webkit抓取动态网页和链接
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .NET 4.0中的泛型协变和反变
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET Micro Framework 4.2 beta 源码探析
  • .NET 回调、接口回调、 委托
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • @Async注解的坑,小心
  • @Pointcut 使用
  • [ajaxupload] - 上传文件同时附件参数值
  • [BZOJ1040][P2607][ZJOI2008]骑士[树形DP+基环树]
  • [C]编译和预处理详解
  • [C++]:for循环for(int num : nums)
  • [C++]——带你学习类和对象
  • [CareerCup] 2.1 Remove Duplicates from Unsorted List 移除无序链表中的重复项