前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >javafx框架tornadofx实战-舒尔特3-增加从外部json文件导入内容功能

javafx框架tornadofx实战-舒尔特3-增加从外部json文件导入内容功能

原创
作者头像
用户6167008
修改于 2020-06-09 09:17:35
修改于 2020-06-09 09:17:35
1.1K0
举报

json文件content1.json格式:

代码语言:txt
AI代码解释
复制
[
  {
    "title": "大写汉字数字",
    "content": "零,壹,贰,叁,肆,伍,陆,柒,捌,玖,拾,佰,仟"
  },
  {
    "title": "大写英文数字",
    "content": "one,two,three,four,five,six,seven,eight,nine,ten,eleven,twelve,thirtheen,fourtheen,fifteen,sixteen"
  }
]

在顶部增加“加载文件”按键,定义 _chooseFile()函数来加载外部json文件:

代码语言:txt
AI代码解释
复制
button("加载文件") {
    action {
        _chooseFile()
    }
}

_chooseFile()函数:

代码语言:txt
AI代码解释
复制
private fun _chooseFile() {
    val fileType = listOf("*.json", "*.txt")
    val efset = arrayOf(FileChooser.ExtensionFilter("$fileType", fileType))
    val fileschoosed = chooseFile("选择文件", efset, mode = FileChooserMode.Single) {
        // p初始目录为当前项目目录
        initialDirectory = File(File("").canonicalPath)
    }
    if (fileschoosed.isNotEmpty()) {
        _init(fileschoosed.first().toURI().toURL())
    }
}

定义_init(filePath:URL)函数,通过tornadofx提供的loadJsonArray方法,将 "title"和 "content"存入一个map中,由于map的keys是无顺序的,为了保证左侧listview中的内容与json文件中的内容的顺序一致,同时将 "title"添加到types变量中,见如下代码:

代码语言:txt
AI代码解释
复制
//存放 "title"和 "content"的map
    private val typeMap = observableMapOf<String, String>()

    private fun _init(filePath:URL){
        types.clear()
        typeMap.clear()
        types.add("数字")//不论加载什么内容,将"数字"和"自定义"保留为默认项
        loadJsonArray(filePath).map {
            val obj = it.asJsonObject()
            types.add(obj.getString("title"))//每次添加一项,能保证types中的顺序与json文件中的一致
            typeMap.put(obj.getString("title"), obj.getString("content"))
        }
        // types.addAll(typeMap.keys)//此种方式会打乱顺序
        types.add("自定义")
    }

下载jar包体验

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
javafx框架tornadofx实战-舒尔特4-左侧列表数据构建函数变更
由于改成从外部json文件加载数据到左侧列表,相应的构建函数变更如下: private fun initContent(title: String) { content.value = "" isDIY.value = title == "自定义" when (title) { "数字" -> { (1..nproperty.value * nproperty.value).map {//用英文逗号分隔每个数字
用户6167008
2020/06/10
3710
javafx框架tornadofx实战-益智游戏-找出指定的内容1
找到它.gif 布局与上一个案例舒尔特基本相似,来体验一下吧,代码也在同小异,直接上代码: 重要的事情说3遍: 动手敲代码!!!动手敲代码!!!动手敲代码!!! class MainAPP : App(MainView::class) class MainView : View("把指定的图片全都给我找出来") { private val c by inject<MainController>() lateinit var r: GridPane private val sue
用户6167008
2020/08/11
7300
javafx框架tornadofx实战-益智游戏-找出指定的内容1
javafx框架tornadofx实战-舒尔特6-增加导出舒尔特方格功能
本节需要导入以下3个类: import javafx.embed.swing.SwingFXUtils import javafx.scene.SnapshotParameters import ja
用户6167008
2020/06/15
8730
javafx框架tornadofx实战-舒尔特6-增加导出舒尔特方格功能
javafx框架tornadofx实战-舒尔特8-增加统计功能
重要的事情说3遍: 动手敲代码!!!动手敲代码!!!动手敲代码!!! shuerte3.gif 新建StatisticView.kt文件,并添加到主视图的right drawer中: import javafx.scene.chart.* import tornadofx.* class StatisticView : View("统计") { private val c by inject<MainController>()//注入控制器 private var bc by singleA
用户6167008
2020/06/28
5521
javafx框架tornadofx实战-舒尔特8-增加统计功能
用javafx框架tornadofx做了个天气预报的程序
此实例用到了rest api,tableview,listview,linechart、ItemViewModel等知识,演示了动态加载数据的方法.
用户6167008
2019/10/16
2K1
用javafx框架tornadofx做了个天气预报的程序
javafx框架tornadofx实战-舒尔特2
// 刷新网格 private fun refreshGrid() { timeUsed.set(format(0)) isRun.set(false) resultList.clear() val n = nproperty.value r.clear() suerte.clear() correctResult.clear() isRun.set(false)
用户6167008
2020/06/08
5620
javafx框架tornadofx实战-舒尔特2
二维码生成小工具,采用javafx框架tornadofx实现界面开发
[3zqf7zy13o.gif] import javafx.application.Application import javafx.beans.property.SimpleObjectProperty import javafx.embed.swing.SwingFXUtils import javafx.scene.image.Image import javafx.scene.image.WritableImage import tornadofx.* import javax.imageio.
用户6167008
2019/09/11
1.5K0
二维码生成小工具,采用javafx框架tornadofx实现界面开发
使用javafx框架tornadofx制作的ip地址定位小工具
使用https://gitee.com/lionsoul/ip2region 中的数据库
用户6167008
2019/11/12
3.4K6
使用javafx框架tornadofx制作的ip地址定位小工具
javafx框架tornadofx实战-舒尔特1
set舒尔特.gif import javafx.animation.AnimationTimer import javafx.application.Platform import javafx.geometry.Orientation import javafx.geometry.Pos import javafx.scene.control.RadioButton import javafx.scene.layout.GridPane import javafx.scene.layout.Prior
用户6167008
2020/06/05
7811
javafx框架tornadofx实战-舒尔特1
javafx框架tornadofx实战-舒尔特5-增加字体大小设置和进度显示功能
标签文本绑定到两个属性变量resultSize(结果长度)和correctSize(总长度)
用户6167008
2020/06/11
8950
javafx框架tornadofx实战-舒尔特5-增加字体大小设置和进度显示功能
300行代码不到的javafx框架tornadofx拼图游戏
不知道为什么分成9份的时候无法移动,请高手指教 分成36份的时候程序有可能卡住没反应 分成4份的时候有可能无法成功恢复原图 a2.gif heart2circle.zip 附件运行方式:解压后,双击文件:run.bat import javafx.application.Application import javafx.application.Platform import javafx.beans.property.SimpleObjectProperty import javafx.geome
用户6167008
2019/09/05
1.5K0
深入研究Android启动速度优化(下)- 不敢说100%秒开,但这样做“雀食”是快
在上一篇文章《深入研究Android启动速度优化(上)- 看完这些启动优化已经完成80%了》中,梳理了应用启动的整个过程和问题,启动优化阶段与指标是什么,启动耗时方法的数据统计八种工具与分析,以及一些常见的启动时间问题。可以说是完成了启动优化工作最难的一部分。
Rouse
2024/05/10
2.9K0
深入研究Android启动速度优化(下)- 不敢说100%秒开,但这样做“雀食”是快
软件测试面试中都会问到哪些关于Python的问题?
答:Python是一门语法简洁优美, 功能强大无比, 应用领域非常广泛, 具有强大完备的第三方库,它是一门强类型的可移植、可扩展、可嵌入的解释型编程语言,属于动态语言。
霍格沃兹测试开发
2020/12/17
7710
Java实现Excel导入和导出,看这一篇就够了(珍藏版)
最近抽了两天时间,把Java实现表格的相关操作进行了封装,本次封装是基于 POI 的二次开发,最终使用只需要调用一个工具类中的方法,就能满足业务中绝大部门的导入和导出需求。
全栈程序员站长
2022/09/14
4K0
Java实现Excel导入和导出,看这一篇就够了(珍藏版)
Spring MVC 学习总结(九)——Spring MVC实现RESTful与JSON(Spring MVC为前端提供服务)
 很多时候前端都需要调用后台服务实现交互功能,常见的数据交换格式多是JSON或XML,这里主要讲解Spring MVC为前端提供JSON格式的数据并实现与前台交互。RESTful则是一种软件架构风格、
张果
2018/01/04
2.2K0
Spring MVC 学习总结(九)——Spring MVC实现RESTful与JSON(Spring MVC为前端提供服务)
构建你自己的 AI 辅助编码助手:从 IDE 插件、代码数据生成和模型微调(万字长文)
我们会在 GitHub 上持续更新这个教程: https://github.com/phodal/build-ai-coding-assistant,欢迎在 GitHub 上讨论。
Phodal
2024/01/02
5.6K0
构建你自己的 AI 辅助编码助手:从 IDE 插件、代码数据生成和模型微调(万字长文)
【Python】Streamlit库学习:一款好用的Web框架
✨Streamlit是一个基于tornado框架的快速搭建Web应用的Python库,封装了大量常用组件方法,支持大量数据表、图表等对象的渲染,支持网格化、响应式布局。简单来说,可以让不了解前端的人搭建网页。 相比于同类产品PyWebIO,Streamlit的功能更加全面一些。
zstar
2023/03/23
12.2K0
【Python】Streamlit库学习:一款好用的Web框架
01-Springboot博客项目
更改thymeleaf解析模式 重要! thymeleaf对html的检查非常严格,容易出现无法解析的情况,而且不会告诉你具体是哪里无法解析,这就很头疼。不如降低检查水平。 导入依赖
devi
2021/08/18
2K0
Java常用工具类整合
CSDN加速:https://codechina.csdn.net/mirrors/evil0ps/utils 源码和jar见:https://github.com/evil0ps/utils
JokerDJ
2023/11/27
3440
03 . 前端之JavaScipt
语法: splice(index,howmany,item1,.....,itemX)
iginkgo18
2020/09/27
1.5K0
03 . 前端之JavaScipt
推荐阅读
相关推荐
javafx框架tornadofx实战-舒尔特4-左侧列表数据构建函数变更
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档