2012-02-28 13 views
7

我有一個Java Swing應用程序,其中包含一堆框架,這些框架又主要包含顯示大量數據的表格。由於在啓動時安排所有窗口和表總是很麻煩,所以我想實現'工作區'功能,以便用戶可以保存首選項的設置,並在啓動時選擇自動將存儲的工作區加載到所有窗口和表格都顯示爲以前保存的。具體而言,我希望在一個工作空間來存儲的設置包括:Java Swing保存和加載工作區/設置

  • 活動窗口(JFrame的)以及它們的大小和位置在屏幕上
  • 表設置,含選定列,列順序,列寬,排序過濾

有誰知道的聰明和簡單的方法來做到這一點不顯着,似乎什麼樣遍歷所有打開的窗口和保存每條信息與Preferences API的一個非常複雜和繁瑣,解決方案?謝謝

+1

總有'序列化整個圖形用戶界面',但我懷疑1)會有這些圖形用戶界面的不可序列化的部分2)這將是一個麻煩得到正確的工作。 – 2012-02-28 10:47:45

+0

我相信你對這兩個猜疑都是正確的。 – hgus1294 2012-02-28 10:50:58

+1

您可能會考慮使用(更好)Swing應用程序框架,該框架支持存儲應用程序狀態 - 其他細節 - 無痛地使用(儘管切換到新框架可能過於具有侵略性:-) – kleopatra 2012-02-28 12:35:17

回答

7

在這種情況下,明顯的解決方案java.util.prefs.Preferences可能是正確的解決方案。 RCPrefs從這個game是一個簡單的例子,演示保存各種數據類型,包括enum。確切的實施高度依賴於應用程序。雖然單調乏味,但並不需要特別複雜。爲方便起見,example使用靜態方法;框架和桌子的偏好可能每個都值得一類。

+0

我很歡迎反例。 – trashgod 2012-02-28 12:09:28

+0

謝謝。這個例子很有用,我認爲製作工作空間類的想法很有意義。我創建了一個包含位置和大小等通用設置的'WsFrame'類。這個對象可以包含一個或多個特定的設置,比如'WsTable'(用於表格設置)。我選擇通過'Preferences'存儲這些信息,並決定通過XStream簡單地序列化'WsFrame'對象列表並存儲爲xml(因爲我很懶惰,並且查看/編輯輸出很方便)。其實作品很不錯。謝謝。 – hgus1294 2012-03-01 11:25:26

+0

非常好。我可能會被寵壞,因爲我的平臺恰好使用XML來實現'Preferences'。如果你加入這個作爲對比的答案,請給我平息。我認爲這會很有用。 – trashgod 2012-03-01 11:31:26