原文地址:TornadoFx设置保存功能(config和preference使用)

相信大部分的桌面软件都是存在一个设置的界面,允许用户进行设置的修改,此修改之后需要保存的本地,若是让开发者自己实现,还是有些繁琐

这里介绍下TornadoFx中提供的一个config对象,可以快速实现设置页面相关数据的保存

官方文档中(链接在下文的参考有罗列),提及了两个对象configpreferences,下面分别对这两个对象进行讲解

config

基本使用

官方说明config一般作用于存储组件(Control)的状态

用法其实很简单,在View或Application中即可使用,如下代码

//保存数值
config["mykey"] = "数据"
config.save()

config本身其实就是一个Java中的Properties对象,以键值对的方式存储数据

所以,我们知道了用法,不难猜到其获取数值的方法

//从存储的本地文件中取出key为mykey的数据,若没有,则返回默认数值
val result = config.string("mykey","默认数值")

当然,上面举例用的只是string方法,除此之外,相关类型的方法也是都有支持,如boolean(),int()

注意: 存数据和读数据需要在同个文件里,否则读取会失败(原因也好理解,因为config是固定了某个路径)

关于文件路径

上面只是讲了用法,有的同学可能会好奇,之后文件是存储在哪里了呢?

如果你是直接用IDEA跑起来的话,在你项目目录下会有个conf文件夹,其中properties文件名会以包名+View文件名,如下图所示

如果想要修改文件路径,根据你用的范围不同,有几种不同的方法(主要就是重写参数)

View:

class MyView : View() {
override val configPath = Paths.get("some/other/path/myview.properties")
} class MyView : View() {
override val configPath = Paths.get("some/other/path/myview.properties")

App:

class MyApp : App(WelcomeView::class) {
override val configBasePath = Paths.get("/etc/myapp/conf")
}

perferences

perferences和config有些区别,这个是系统层面的,在window中使用的话,会在注册表中新建一个新的数据,如下面的代码

button{
action{
preferences {
putBoolean("mykey",true)
}
}
}

之后可以在HKEY_CURRENT_USER/Software/JavaSoft/....目录找到我们设置的选项数值

这里由于我们是默认,所以,选项目录名就是为TornadoFx

如果你想改的话,也很简单,preferences方法中传递数值

preferences("application") {
putBoolean("boolean", true)
putString("String", "a string")
}

参考

TornadoFx设置保存功能((config和preference使用))的更多相关文章

  1. putty的保存功能如何使用

    Putty的设置保存功能隐藏的实在太好了,原来在Connection菜单中修改设置后,并不能在该界面保存. 保存步骤: 1.需要点击Session菜单,选中下面的Default Setting. 2. ...

  2. Android设置选项开发及自定义Preference样式

    一个完整的Android应用程序都应该提供选项(或者叫偏好设置等等)让用户对APP的表现形式能够进行设置,比如说是否加入用户体验计划,或者是否自动升级.定时提醒.开启自启动.后台运行等等.提供一个好的 ...

  3. 打开phpmyadmin显示高级功能尚未完全设置部分功能未激活

    问题:老师,打开phpmyadmin显示高级功能尚未完全设置部分功能未激活,应该如何解决? 这是前一阵子学生问过我的一个问题,今天我就在博客里解答你的疑问吧. 总共三步可以搞定 1.导入相关文件到数据 ...

  4. PyCharm 去掉自动保存功能

    PyCharm 4.5.4 环境配置 1.去掉"自动保存功能" pycharm默认是自动保存的,习惯自己按 ctrl + s 的可以进行如下设置: 菜单File -> Set ...

  5. 第四十一篇-android studio 关闭自动保存功能

    此方法不可用. 第一步:取消自动保存功能 File > Settings > Appearance & Behavior > System Settings > Syn ...

  6. Intellij IDEA 开启自动保存功能

    IntelljJ IDEA关于文件自动保存功能主要有两种方式: 切换到其他应用时保存变化(默认使能) 设置路径:Settings >> Apperance & Behavior & ...

  7. 【工具】Sublime Text 自动保存功能

    经常需要所以要频繁用到"ctrl+s"保存还是挺麻烦的,所以有的人需要用到失去焦点自动保存功能,这里简单记录下 1.点击"Preferences"里的设置-用户 ...

  8. WebStorm 编辑器 关闭自动保存功能及添加*星星标记

    WebStorm 关闭自动保存功能添加*星星标记为什么要关闭自动保存?      ​ 在前端项目工作当中,往往会采用自动化环境(Gulp.webpack等)当文本发生变化的时候就会自动编译代码.在we ...

  9. phpMyAdmin 高级功能尚未完全设置,部分功能未激活(转载)

    phpMyAdmin 高级功能尚未完全设置,部分功能未激活.请点击这里查看原因. 第一步: 使用Mysql管理员帐号通过phpmyadmin登陆,然后点击“导入”,然后点击“浏览”按钮,找到phpmy ...

随机推荐

  1. WebGL2系列之顶点数组对象

    使用了顶点缓冲技术后,绘制效率有了较大的提升.但是还有一点不尽如人意,那就是顶点的位置坐标.法向量.纹理坐标等不同方面的数据每次使用时需要单独指定,重复了一些不必要的工作.WebGL2提供了一种专门用 ...

  2. JavaScript 工作原理之三-内存管理及如何处理 4 类常见的内存泄漏问题(译)

    原文请查阅这里,本文有进行删减,文后增了些经验总结. 本系列持续更新中,Github 地址请查阅这里. 这是 JavaScript 工作原理的第三章. 我们将会讨论日常使用中另一个被开发者越来越忽略的 ...

  3. Android Studio配置openvc

    最近项目中需要用到opencv,于是就研究了一下怎么在Android studio中配置opencv,记录一下,免得以后还会使用. 一.因为本人Android Studio是4.1的,网上资料大多是3 ...

  4. css3,css的基础全局运用

    浮动 1.浮动起来的盒子不占用位置,浮动了一个盒子下面的标准流的盒子会顶上来 ​ 可用清除浮动的方法来解决标准流会顶替位置的问题 清除浮动给父盒子加overflow: hidden; 鼠标经过事件 : ...

  5. Python网络爬虫 - 爬取中证网银行相关信息

    最终版:07_中证网(Plus -Pro).py # coding=utf-8 import requests from bs4 import BeautifulSoup import io impo ...

  6. Water 2.5.8 发布,一站式服务治理平台

    Water(水孕育万物...) Water 为项目开发.服务治理,提供一站式解决方案(可以理解为微服务架构支持套件).基于 Solon 框架开发,并支持完整的 Solon Cloud 规范:已在生产环 ...

  7. JavaCV的摄像头实战之七:推流(带声音)

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是<JavaCV的摄像头实战> ...

  8. 《手把手教你》系列基础篇(九十二)-java+ selenium自动化测试-框架设计基础-POM设计模式简介(详解教程)

    1.简介 页面对象模型(Page Object Model)在Selenium Webdriver自动化测试中使用非常流行和受欢迎,作为自动化测试工程师应该至少听说过POM这个概念.本篇介绍POM的简 ...

  9. linux常用理论(一)

    第一周 1.按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别. Debian Redhat issue 2.安装Centos7.9和ubuntu操作系统,创建一个自己名字的用户名,并可以 ...

  10. Golang 高阶函数

    定义 高阶函数是接收函数作为参数或返回函数作为输出的函数. 高阶函数是对其他函数进行操作的函数,要么将它们作为参数,要么返回它们. 举例 函数作为参数 package main import &quo ...