2012-02-28 13 views
7

Tôi có một ứng dụng Java Swing có chứa một loạt các khung mà chủ yếu chứa các bảng hiển thị lượng lớn dữ liệu. Vì nó luôn luôn là một rắc rối và mất nhiều thời gian để sắp xếp tất cả các cửa sổ và bảng khi khởi động, tôi muốn thực hiện chức năng 'workspace' để người dùng có thể lưu một thiết lập ưu tiên và khi khởi động chọn tự động tải không gian làm việc đã lưu có tất cả các cửa sổ và bảng xuất hiện như đã lưu trước đó. Cụ thể, các thiết lập mà tôi muốn để lưu trữ trong một không gian làm việc là:Java Swing lưu và tải không gian làm việc/cài đặt

  • cửa sổ hoạt động (JFrame) và kích thước của chúng và vị trí trên màn hình
  • thiết lập Bảng, cột được lựa chọn bao gồm, trật tự cột, chiều rộng cột, phân loại, lọc

có ai biết một cách thông minh và dễ dàng để thực hiện điều này mà không có sự rõ ràng, và những gì có vẻ như rất phức tạp và cồng kềnh, giải pháp của iterating trên tất cả các cửa sổ đang mở và tiết kiệm từng mẩu thông tin với Preferences api ? Cảm ơn

+1

Luôn luôn có 'serialize toàn bộ GUI', nhưng tôi nghi ngờ rằng 1) sẽ không có phần serializable của những GUI 2) đó sẽ là một rắc rối để làm việc đúng. –

+0

Tôi tin rằng bạn đúng về cả hai nghi ngờ. – hgus1294

+1

bạn có thể xem xét việc sử dụng (tốt hơn) Swing Application Framework hỗ trợ lưu trữ trạng thái ứng dụng - trong số các niceties khác - không dễ dàng (mặc dù chuyển sang một framework mới có thể quá xâm phạm :-) – kleopatra

Trả lời

7

Trong trường hợp này, giải pháp rõ ràng, java.util.prefs.Preferences, có lẽ là chính xác. RCPrefs từ game này là một ví dụ đơn giản minh họa việc lưu nhiều loại dữ liệu, bao gồm enum. Việc triển khai chính xác phụ thuộc nhiều vào ứng dụng. Trong khi tẻ nhạt, nó không cần phải đặc biệt phức tạp. Đối với sự cần thiết, các example sử dụng phương pháp tĩnh; tùy chọn khung và bảng có thể đáng giá mỗi lớp.

+0

Tôi muốn chào đón một ví dụ phản đối. – trashgod

+0

Cảm ơn. Ví dụ này hữu ích và tôi nghĩ ý tưởng tạo ra các lớp không gian làm việc có ý nghĩa. Tôi đã tạo một lớp 'WsFrame' chứa các cài đặt chung như vị trí và kích thước. Đối tượng này có thể chứa một hoặc nhiều cài đặt cụ thể như 'WsTable' (cho cài đặt bảng). Tôi đã chọn không lưu trữ thông tin này thông qua 'Preferences' và quyết định đơn giản hóa danh sách các đối tượng' WsFrame' thông qua XStream và lưu trữ dưới dạng xml (vì tôi lười và thuận tiện để xem/chỉnh sửa đầu ra). Trên thực tế hoạt động khá tốt. Cảm ơn. – hgus1294

+0

Tuyệt vời. Tôi có thể bị hư hỏng, khi nền tảng của tôi xảy ra để sử dụng XML để thực hiện 'Tùy chọn'. Ping tôi nếu bạn thêm này như là câu trả lời tương phản; Tôi nghĩ nó sẽ hữu ích. – trashgod