码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • TornadoFx设置保存功能((config和preference使用))


    本文为作者原创,转载请注明出处,谢谢配合
    作者:stars-one
    链接:https://www.cnblogs.com/stars-one/p/16315413.html

    本篇大约有1673个字,阅读预计需要2.09分钟


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

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

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

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

    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")
    }
    

    参考

    • Config Settings and State · TornadoFX Guide
  • 相关阅读:
    Integritee通过XCM集成至Moonriver,为其生态系统带来企业级隐私解决方案
    Python基础(6-1)函数
    JavaSE---方法的使用
    Java集合框架【二容器[LinkedList容器类、Set接口]】
    无法启动报,To install it, you can run: npm install --save @/components/iFrame/index
    数仓:Doris在美团的应用实践
    word-view2卫星影像图如何获取
    移动应用-Android开发基础\核心知识点
    微信小程序 nodejs+vue+uninapp学生在线选课作业管理系统
    力扣hot100——第2天:4寻找两个正序数组的中位数、5最长回文子串、10正则表达式匹配
  • 原文地址:https://www.cnblogs.com/stars-one/p/16315413.html
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号