Skip to content

基于JavaFX的即时通讯客户端程序(开发中)。

License

Notifications You must be signed in to change notification settings

icuxika/IMFrameworkFX

Repository files navigation

基于 JavaFX 的即时通讯客户端程序

基本配置

JDK版本为17,如果需要在命令行执行gradlew.bat run,请设置环境变量JAVA_HOME 指向jdk17根目录,也可以设置临时环境变量set JAVA_HOME=C:\CommandLineTools\Java\jdk-15,注意有些版本需要添加引号。

配置Emoji资源,提取码:9amj ,解压后将文件夹 /emojipedia/ 放到项目根目录下,注意不要保留压缩包名称所对应的文件夹。

TODO

  • JFoenix 其他的组件的复制和测试
  • 托盘图标(实现一个任务队列处理收到新消息和好友请求时的通知操作)
  • 主题皮肤
  • 消除重复代码(后期)

未在多个平台测试过的功能(不包括Linux)

  • 系统托盘功能(目前只在Windows 10上测试过)

构建说明,(使用了插件Badass-Runtime plugin

  • gradle runtime

    构建bat脚本,build.gradle中通过配置runtime > launcher > noConsole可以关闭掉执行时的cmd黑框口

  • gradle jpackageImage

    构建exe程序

  • gradle jpackage(Windows平台下,Java15版本此命令存在bug,Java16已经解决)

    Windows上通过WIX TOOLSET(需要将其bin目录添加到环境变量) 来构建对应的安装程序

  • 其他说明:

    • 此文档都基于Windows平台的实现来写,其他平台理论上相关命令执行效果一致。
    • runtime > modules的配置内容等于gradle suggestModules命令的结果。
    • 由于此项目emoji表情通过本地的emojipedia文件夹来加载,此构建命令是不会打包此文件夹,所以构建exe时,可以将emojipedia 文件夹直接拷贝到exe所在目录,但构建安装包时,就没办法了,实际上emoji资源应该在程序运行时通过网络加载,所以这个问题也不是个问题。
    • 可以构建exe后,将emojipedia拷贝后使用NSIS等其他安装包制作工具来多加一步解决这个问题。
    • 非模块化的打包方式制作出来的安装包相比模块化的方式大一些,所以如果项目比较新,并且所用到的第三方库支持模块化的话, 可以按照JavaFX-Package-Sample , 其中gradle 方式的插件可以自动模块化一些非模块化的第三方库,大部分情况下能解决问题。
    • 使用Kotlin来写JavaFX项目,支持模块化打包的项目模板KtFX-Package-Sample
    • 使用Kotlin来写JavaFX项目,非模块化构建的方式,可以查看项目KtFX-Lets-Plotnon-modular 分支实现。
    • 项目KtFX-Lets-Plotmaster 分支演示了模块化项目中使用未模块化的库的时候一个解决思路(目前只能执行,还没有解决构建对应的问题,Kotlin本身相关的库就挺混乱),相当麻烦。
    • 不想为模块化折腾的话,就使用非模块化的方式来构建项目。
    • 目前jpackage默认使用WIX TOOLSET,难以灵活配置,特殊需求,最好只构建出exe,然后使用其他安装包制作工具。

文档教程

一些功能实现的来源

界面预览

  • 用户状态 用户状态
  • 会话页面
    会话页面
  • 头像修改
    头像修改
  • 消息发送方式
    消息发送方式

About

基于JavaFX的即时通讯客户端程序(开发中)。

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published