TornadoFx設置保存功能((config和preference使用))

原文地址: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")
}

參考