TornadoFx設定儲存功能((config和preference使用))

one發表於2022-05-26

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

參考

相關文章