2012-02-28 17 views
7

Büyük miktarda veri içeren tabloları içeren bir grup kare içeren bir Java Swing uygulamasına sahibim. Her zaman bir zorluk ve başlangıçta tüm pencereleri ve tabloları düzenlemek için zaman harcadığından, 'çalışma alanı' işlevselliğini uygulamak ister, böylece kullanıcı bir tercih ayarını kaydedebilir ve başlangıçta depolanan çalışma alanını otomatik olarak yüklemeyi seçer. Tüm pencereler ve tablolar önceden kaydedilmiş gibi görünür. Özellikle, bir çalışma alanında saklamak isteyen ayarları şunlardır: EkrandaJava Swing Kaydet ve çalışma alanı/ayarlarını yükle

  • Aktif pencere (JFrame) ve bunların boyutları ve konumları
  • Masa ayarları dahil seçilmiş sütunlar, sütun sırası, sütun genişliği, sıralama, filtreleme

kimse bariz olmadan bunu gerçekleştirmek için akıllı ve kolay bir şekilde biliyor mu ve ne Preferences API ile her bilgi parçasını tüm açık pencereleri üzerinde yineleme ve tasarruf edilmesine ilişkin çok karmaşık ve hantal, çözüm gibi görünüyor ? Teşekkürler

+1

Her zaman 'tüm GUI'yi serileştirir', ancak sanırım 1) bu GUI'lerin diziselleştirilemeyen kısımları olacak 2) çalışmanın doğru olması için bir güçlük olacak. –

+0

Her iki şüphede de doğru olduğuna inanıyorum. – hgus1294

+1

(Better) Salınım Uygulama Çerçevesini (diğer nicellerin yanı sıra) saklamanın uygulama durumunu (ağrısız bir şekilde) (yeni bir çerçeveye geçiş yapmak çok invaziv olabilir :-)) kullanabileceğinizi düşünebilirsiniz. – kleopatra

cevap

7

Bu durumda, belirgin çözüm, java.util.prefs.Preferences, muhtemelen doğru olanıdır. RCPrefs bu game, enum dahil olmak üzere çeşitli veri türlerini kaydetmeyi gösteren basit bir örnektir. Kesin uygulama büyük ölçüde uygulamaya bağlıdır. Sıkıcı iken, özellikle karmaşık olması gerekmez. Uygunluk açısından example statik yöntemler kullanır; çerçeve ve tablo tercihleri ​​muhtemelen her biri için bir sınıftır.

+0

Bir karşı örnek kabul ediyorum. – trashgod

+0

Teşekkürler. Örnek yararlıydı ve çalışma alanı sınıfları yapma fikrinin mantıklı olduğunu düşündüm. Konum ve boyut gibi genel ayarlar içeren bir WsFrame sınıfı oluşturdum. Bu nesne 'WsTable' gibi bir veya birden çok özel ayar içerebilir (tablo ayarları için). Bu bilgiyi 'Tercihler'i kullanarak saklamayı tercih ettim ve XStream üzerinden WsFrame' nesnelerini serileştirmeye ve xml olarak depolamaya karar verdim (tembel olduğum için ve çıktıyı görüntülemek/düzenlemek uygun). Aslında oldukça iyi çalışıyor. Teşekkürler. – hgus1294

+0

Mükemmel. Platformum, "Tercihler" i uygulamak için XML kullanmasıyla bozulabilir. Bunu karşıt cevap olarak eklerseniz pes edin; Bence faydalı olur. – trashgod