ich habe eine JTable bei der man Spalten verschieben kann, die Spalten Grösse verändern kann (etc die Standard Eigenschaften halt), die Spalten sortieren kann, Farben für eine Spalte auswählen kann, einzelne Spalten komplett ausblenden kann usw.
Wenn man diese Einstellungen vergenommen hat, will ich das diese Tabellen Ansicht auch beim nächsten Programmstart wieder verfügbar ist.
Ich habe mir erst überlegt all diese Informationen in eine Datei zu schreiben beim verlassen des Programms und auszulesen beim Programmstart. Genauer gesagt wollte ich erst die Properties Klasse dazu benutzen, aber bei genauer betrachtung scheint mir das vielleicht doch nicht so ganz geeignet.
Ich habe mehrere Tabellen die ich jede in eine eigene Datei schreiben wollte ( also die Eigenschaften der Tabelle in die Datei schreiben), aber dann müsste ich in den Dateien immer noch zu jeder Spalte die Grösse die Farbe die Position (also Reihenfolge) etc dazuschreiben und ich glaube da ist die Properties Klasse nicht so ganz geeignet.
Hat jemand vielleicht eine andere/bessere Idee wo ich diese Informationen abspeichern könnte?
oder wie ich es vernünftig und einigermaßen übersichtlich mit der Properties Klasse hinbekommen könnte?
Du könntest die ganze JTable als Objekt einfach in einer (Binär-)Datei speichern. Ist halt von außen nicht lesbar. Alternativ könntest du zum Beispiel auch XML verwenden. Nur ein paar Denkanstöße.
Ja wenn ich es als XML speichern lasse dann doch auch wieder mit der Properties Klasse, oder?
Kann ich da die XML Struktur auch etwas anpassen oder kann ich da auch nur mit setProperty einen neuen Wert setzen?
Am übersichtlichsten wäre es glaub wenn ich in der Datei mehrere "Bereiche" oder Kategorien anlegen könnte wobei jede Spalte der Tabelle einenen eigenen Bereich hätte, in dem dann die Breite,Höhe,Sortierung,Farbei etc stehen würde.
Wie würde es denn genau funktionieren wenn ich das komplette Table Object in einer Datei speichern möchte und beim Programmstart wieder auslesen müsste?
Ja wenn ich es als XML speichern lasse dann doch auch wieder mit der Properties Klasse, oder?
Kann ich da die XML Struktur auch etwas anpassen oder kann ich da auch nur mit setProperty einen neuen Wert setzen?
Am übersichtlichsten wäre es glaub wenn ich in der Datei mehrere "Bereiche" oder Kategorien anlegen könnte wobei jede Spalte der Tabelle einenen eigenen Bereich hätte, in dem dann die Breite,Höhe,Sortierung,Farbei etc stehen würde.
Wie würde es denn genau funktionieren wenn ich das komplette Table Object in einer Datei speichern möchte und beim Programmstart wieder auslesen müsste?
hm ja, habs jetzt mal etwas genauer getestet und swoeit funktioniert es auch, hier mal der Code den ich verwende:
Code:
OutputStream fos = null;
try
{
fos = new FileOutputStream( "table.dat" );
ObjectOutputStream o = new ObjectOutputStream( fos );
o.writeObject( table );
}
catch ( IOException e )
{ System.err.println( e ); }
finally
{
try { fos.close(); } catch ( Exception e ) { }
}
und auslesen tu ichs dann mit
Code:
fis = new FileInputStream( "table.dat" );
ObjectInputStream o = new ObjectInputStream( fis );
table = (JTable) o.readObject();
Er speichert die Breite der Spalten und die Postion jeder Spalte, aber nicht die Sortierung wenn ich zb einen TableRowSorter einsetze. Ich bezweifle auch das er andere Dinge wie die Spalten Farbe oder Schriftgrösse speichert.
Hab auch schon versucht den TableRowSorter zu serialisieren, funktioniert aber nicht.
Aber ich glaube der Ansatz ist schon mal da.
Eine Frage dazu hätt ich noch: kann/sollte man nur ein Objekt pro Datei speichern. Man gibt ja auch bei readObject(); nicht speziell an was man aus der Datei lesen möchte, ausser das es ein Objekt ist, was wenn man 2 Table Objekte in einer Datei speichern will?
Ich bezweifle auch das er andere Dinge wie die Spalten Farbe oder Schriftgrösse speichert.
Hab auch schon versucht den TableRowSorter zu serialisieren, funktioniert aber nicht.
Warum speicherst du nicht alle Zeilen der Tabelle, dann hast die sortierung... hast du schon mal in MS Excel versucht text zu schreiben und farbig zu machen und danach als XML datei zu exportieren? Du wirst dich wundern was da alles reinpasst ;-)
naja wenn ich alle Zeilen der Tabellen speichere dann wird das zum einen viel Platz brauchen (die Tabellen sind ziemlich gross) und zum anderen stehen die Zeilen ja schon in der Datenbank.
Aber man kann bestimmt per EventListener abfragen ColumnHeader gedrückt wurde und dann vielleicht noch die Sortier-reihenfolge (ich benutze die JXTable) und dann speicher ich das am besten in einer Properties Klasse ab und lese -> setze es dann beim Programmstart.
mach das doch mal mit der xml tabelle in excel! Schreibe 50 zeilen text mit farbe und sortiere sie, danne exportieren. Schau mal wie der das macht ;-) Ich bin gerade dabei xml zu lernen dir da also net wirklich helfen. Doch ja wie du sagst ich würde sortierreihenfolge evtl. in einem boolean speichern sprich true=ASC und false = DSC.. Gibts da keine Methode herauszufinden wie sortiert ist?