2014-09-24 20 views
1

我嘗試在JavaFX中使用帶有一些按鈕的左側面板和右側面板進行應用程序加載不同面板。兩個面板(左/右)都在BorderPane中。 每個按鈕被按下時,在右側面板中加載一個fxml。如果我按其他buttom,面板更改並加載其他fxml。使用子面板創建JavaFX應用程序

在此基礎上的模式,我有2個問題:

  1. 我如何保存面板的狀態?

    示例:按btn1時,加載包含例如texfield字段的panel1並寫入我的名字。接下來,我按btn2並用其他控件加載panel2。最後,我返回到panel1,但我需要讓面板中的文本字段包含我的名字,沒有空的文本字段(反之亦然,如果我在panel2中有控件並且從另一個控件中更改了某個控件)。

  2. 如何在面板之間共享信息?

    例如:我在panel1中加載用戶列表(來自DB),如果用戶更改爲panel2,我在標籤中顯示所有用戶的總數,但我想重複使用相同的列表來計算我不想要的值執行相同的查詢。

我嘗試在窗口控制器中使用HashMap(使用窗口結構關聯fxml)。當面板加載時,我檢查控制器是否存在於HashMap中,如果沒有,我創建並實例化並保存,下次用戶使用同一個面板時,控制器將從哈希映射中取出並以與上次相同的狀態加載。這有效,但我有一個問題,如何在其他面板控制器之間交換信息?我知道我可以將hashmap傳遞給所有控制器,但我更喜歡使用依賴注入。

我不想使用Spring框架,我嘗試使用DataFX,但我不知道該怎麼做?

+0

看看[afterburner.fx](http://afterburner.adam-bien.com/) – 2014-09-24 03:17:19

回答

2

這個問題確實是一對夫婦的其他問題的合併:

但是,因爲你想依賴注入,詹姆斯暗示,看看afterburner.fx這是一個用於JavaFX的輕量級依賴注入框架。使用這樣的框架應該通過依賴注入的對象來幫助保存和共享面板之間的狀態。

我建議您查看上述資源,然後嘗試使用您的應用程序取得更多進展,並在您遇到需要幫助的特定事物時發回(在代碼爲mcve的新問題中,每個問題有一個問題)用。