TornadoFx設置保存功能((config和preference使用))
- 2022 年 5 月 26 日
- 筆記
- Kotlin, tornadofx學習筆記
相信大部分的桌面軟體都是存在一個設置的介面,允許用戶進行設置的修改,此修改之後需要保存的本地,若是讓開發者自己實現,還是有些繁瑣
這裡介紹下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")
}