|
@@ -0,0 +1,90 @@
|
|
|
|
+##javaFX运行环境
|
|
|
|
+#####JDK1.8版本,安装javafx
|
|
|
|
+#####开发工具:IDEA
|
|
|
|
+ 从Java7u6开始,JDK(Java开发工具包)包括了JavaFX库。
|
|
|
|
+ 因此,要运行JavaFX应用程序,您只需要在系统中安装Java8,使用其他版本JDK还需要额外导入jfxrt.jar等包。
|
|
|
|
+ 另外,IntelliJIDEA也为JavaFX提供了支持,在使用前需要进行相应配置。
|
|
|
|
+ 在IDEA中,打开File-->settings-->Languages&Frameworks-->javaFX
|
|
|
|
+ 在选着安装好的JavaFX Scene Builder 2.0.exe(我安装的是版本2)
|
|
|
|
+
|
|
|
|
+##基本响应流程概述
|
|
|
|
+#####Client->Server
|
|
|
|
+ 请求注册(已注册用户请求登录),请求登录状态
|
|
|
|
+ 聊天命令分为单人和多人群聊
|
|
|
|
+#####Server->Client
|
|
|
|
+ 返回登录|注册成功反馈
|
|
|
|
+ 返回登录|注册失败反馈,及失败原因(用户已经注册|用户尚未注册|密码错误|服务器连接失败等...)
|
|
|
|
+ 每个用户登录广播用户集
|
|
|
|
+ 提取数据仓发送消息给指定用户
|
|
|
|
+ 广播信息
|
|
|
|
+
|
|
|
|
+##两个依赖
|
|
|
|
+####1.mysql使用依赖
|
|
|
|
+ <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
|
|
|
|
+ <dependency>
|
|
|
|
+ <groupId>mysql</groupId>
|
|
|
|
+ <artifactId>mysql-connector-java</artifactId>
|
|
|
|
+ <version>5.1.37</version>
|
|
|
|
+ </dependency>
|
|
|
|
+####2.gson的使用
|
|
|
|
+ <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
|
|
|
|
+ <dependency>
|
|
|
|
+ <groupId>com.google.code.gson</groupId>
|
|
|
|
+ <artifactId>gson</artifactId>
|
|
|
|
+ <version>2.8.2</version>
|
|
|
|
+ </dependency>
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+##创建fxml文件
|
|
|
|
+####1.可以采用javaFXSceneBuilder进行可视化操作
|
|
|
|
+####2.自己创建,添加样式功能。
|
|
|
|
+ 注:fxml资源文件一定要绑定其对应的View控制器类,可以在SceneBuilder中的左下角
|
|
|
|
+ 绑定界面的Controller进行指定,也可以在fxml的源码中修改fx:controller...进行绑定。
|
|
|
|
+
|
|
|
|
+####(1)LoginView.fxml(登陆界面)
|
|
|
|
+ 采用GridPane的布局,GridPane是JavaFX 2.0中功能最强大,最灵活的布局窗格。
|
|
|
|
+ 它在由行和列组成的灵活网格中布置其子项,与Swing的GridBagLayout或HTML的表格模型非常相似。
|
|
|
|
+ 密码输入用PasswordField属性,保证隐秘性
|
|
|
|
+
|
|
|
|
+####(2)MainView.fxml(聊天界面)
|
|
|
|
+ 采用GridPane的布局,主要由两种组件搭建HBOX和VBOX
|
|
|
|
+ HBox中的H是Horizontal的首字母,意为水平的。HBox即水平的布局,将组件按水平方向依次排列。
|
|
|
|
+ VBox中的V是Vertical的首字母,意为垂直的。VBox即垂直的布局,将组件按竖直方向依次排列。
|
|
|
|
+
|
|
|
|
+####(3)EmojiSelectorUI.fxml(表情包界面)
|
|
|
|
+ VBOX布局
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+##客户端MainApp
|
|
|
|
+####整体基本架构为MVC
|
|
|
|
+ model层通过control进行数据交互同时control层进行login和chatroom界面切换控制。
|
|
|
|
+ 基本界面切换
|
|
|
|
+ 参考JavaFX - 实现管理多个Stage窗口及源码解析
|
|
|
|
+ 1.由stageController进行界面构建和跳转
|
|
|
|
+ 2.将资源文件(fxml文件)和ID写成静态,分别是每个界面的ID和资源文件的相对路径
|
|
|
|
+ 3.在start()方法中对StageController控制器进行实例化并用StageController对象加载fxml资源文件。
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+##服务端Server
|
|
|
|
+ Master-Worker模式是常用的并行模式之一,它的核心思想是:系统由两类进程协同工作,即Master进程和Worker进程,
|
|
|
|
+ Master负责接收和分配任务,Wroker负责处理子任务。当各个Worker进程将子任务处理完成后,将结果返回给Master进程,
|
|
|
|
+ 由Master进程进行汇总,从而得到最终的结果.
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+##舞台控制器Stage
|
|
|
|
+####第一步:创建一个StageController控制器
|
|
|
|
+ StageController控制器主要是加载fxml资源文件和对应的View控制器、生成Stage对象
|
|
|
|
+ 以及对Stage对象进行管理,因此该StageController控制器对象也需要被注入到每个fxml的View控制器中。
|
|
|
|
+ 控制器在对fxml资源文件加载的时候使用的是Pane这个容器作为最基底的容器。
|
|
|
|
+
|
|
|
|
+####第二步:将StageController控制器注入(注册)到每个界面的控制器中
|
|
|
|
+ 在这里创建一个ControlledStage.java接口,所有的View控制器都去实现这个接口即可
|
|
|
|
+
|
|
|
|
+ PS:此方法参照CSDN作者老猫,本文连接:http://blog.csdn.net/nthack5730/article/details/51901593
|
|
|
|
+
|
|
|
|
+##表情包
|
|
|
|
+ emjio表情包
|
|
|
|
+ javafx的textArea不支持 文字加图片,在java分fx中textflow可以存放子组件,
|
|
|
|
+ 所以显示界面使用textflow,输入界面使用textArea,显示的表情以表情简写表示
|
|
|
|
+
|
|
|
|
+未完待续。。。。。
|