tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
802
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Feb 2004
    Beiträge
    592
    Hi,

    gibt es einen einfachen Weg um die Spaltenposition, Größe, etc... einer JTable persistieren?

    Danke
     

  2. #2
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo!

    Wie wär's denn, wenn du die JTable einfach serialisierst? (Vorher das Tablemodell leeren).

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  3. #3
    Registriert seit
    Feb 2004
    Beiträge
    592
    Kannst du mir eine kleine Stütze geben? Da fehlts bei mir noch ein bischen. Ich weiß, nicht wo und wie ich sie ablegen kann.

    Danke
     

  4. #4
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo!

    So ungefähr.. dummerweise wird das TableOrdering nicht mit Serialisiert... shit:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    
     package de.tutorials;
     
     import java.awt.BorderLayout;
     import java.awt.event.WindowAdapter;
     import java.awt.event.WindowEvent;
     import java.awt.event.WindowListener;
     import java.io.FileInputStream;
     import java.io.FileNotFoundException;
     import java.io.FileOutputStream;
     import java.io.IOException;
     import java.io.ObjectInputStream;
     import java.io.ObjectOutputStream;
     
     import javax.swing.JFrame;
     import javax.swing.JScrollPane;
     import javax.swing.JTable;
     import javax.swing.table.DefaultTableModel;
     
     public class JTableStoreExample extends JFrame {
     
        JTable table;
     
        public JTableStoreExample() {
            super("JTableStoreExample");
            // setDefaultCloseOperation(EXIT_ON_CLOSE);
            addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) {
                    try {
                        ((DefaultTableModel) table.getModel()).getDataVector()
                                .removeAllElements();
                        ObjectOutputStream oos = new ObjectOutputStream(
                                new FileOutputStream("c:/jtable.sav"));
                        oos.writeObject(table);
                        oos.flush();
                        oos.close();
                    } catch (Exception ex) {
                        ex.printStackTrace();
                    }
                    setVisible(false);
                    dispose();
                    System.exit(0);
                }
            });
     
            DefaultTableModel model = new DefaultTableModel(1, 4);
     
            try {
                table = loadJTable();
                table.setModel(model);
            } catch (Exception e) {
                e.printStackTrace();
                table = new JTable(model);
            }
     
            add(new JScrollPane(table), BorderLayout.CENTER);
     
            pack();
            setVisible(true);
        }
     
        private JTable loadJTable() throws Exception {
            ObjectInputStream ois = new ObjectInputStream(new FileInputStream(
                    "c:/jtable.sav"));
            try {
                return (JTable) ois.readObject();
            } finally {
                if (ois != null) {
                    ois.close();
                }
            }
        }
     
        public static void main(String[] args) {
            new JTableStoreExample();
        }
     }

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  5. #5
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo!

    So gehts:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    
     package de.tutorials;
     
     import java.awt.BorderLayout;
     import java.awt.event.WindowAdapter;
     import java.awt.event.WindowEvent;
     import java.io.FileInputStream;
     import java.io.FileOutputStream;
     import java.io.ObjectInputStream;
     import java.io.ObjectOutputStream;
     
     import javax.swing.JFrame;
     import javax.swing.JScrollPane;
     import javax.swing.JTable;
     import javax.swing.table.DefaultTableModel;
     import javax.swing.table.TableColumnModel;
     
     public class JTableStoreExample extends JFrame {
     
        JTable table;
     
        public JTableStoreExample() {
            super("JTableStoreExample");
            // setDefaultCloseOperation(EXIT_ON_CLOSE);
            addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) {
                    try {
                        ObjectOutputStream oos = new ObjectOutputStream(
                                new FileOutputStream("c:/jtable.sav"));
                        oos.writeObject(table.getColumnModel());
                        oos.flush();
                        oos.close();
                    } catch (Exception ex) {
                        ex.printStackTrace();
                    }
                    setVisible(false);
                    dispose();
                    System.exit(0);
                }
            });
        
            DefaultTableModel model = new DefaultTableModel(1, 4);
     
            table = new JTable(model);
            try {
                TableColumnModel columnModel = loadJTableColumnModel();
                table.setColumnModel(columnModel);
            } catch (Exception e) {
                e.printStackTrace();
            }
     
            add(new JScrollPane(table), BorderLayout.CENTER);
     
            pack();
            setVisible(true);
        }
     
        private TableColumnModel loadJTableColumnModel() throws Exception {
            ObjectInputStream ois = new ObjectInputStream(new FileInputStream(
                    "c:/jtable.sav"));
            try {
                return (TableColumnModel) ois.readObject();
            } finally {
                if (ois != null) {
                    ois.close();
                }
            }
        }
     
        public static void main(String[] args) {
            new JTableStoreExample();
        }
     }
    (Vorher altes jtable.sav löschen...)


    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  6. #6
    Registriert seit
    Feb 2004
    Beiträge
    592
    Hi Tom,

    doch es funktioniert. Allerdings nur wenn du das TableColumnModel serialisierst.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    
    import java.awt.BorderLayout;
     import java.awt.event.WindowAdapter;
     import java.awt.event.WindowEvent;
     import java.awt.event.WindowListener;
     import java.io.FileInputStream;
     import java.io.FileNotFoundException;
     import java.io.FileOutputStream;
     import java.io.IOException;
     import java.io.ObjectInputStream;
     import java.io.ObjectOutputStream;
     
     import javax.swing.JFrame;
     import javax.swing.JScrollPane;
     import javax.swing.JTable;
     import javax.swing.table.DefaultTableModel;
    import javax.swing.table.TableColumnModel;
     
    public class TableStore extends JFrame {
     
        JTable table;
     
        public TableStore() {
            super("JTableStoreExample");
            // setDefaultCloseOperation(EXIT_ON_CLOSE);
            addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) {
                    try {
                        ObjectOutputStream oos = new ObjectOutputStream(
                                new FileOutputStream("c:/jtable.sav"));
                        oos.writeObject(table.getColumnModel());
                        oos.flush();
                        oos.close();
                    } catch (Exception ex) {
                        ex.printStackTrace();
                    }
                    setVisible(false);
                    dispose();
                    System.exit(0);
                }
            });
     
            DefaultTableModel model = new DefaultTableModel(1, 4);
     
            try {
                table = new JTable();
                table.setModel(model);
               table.setColumnModel(loadTableColumnModel());
            } catch (Exception e) {
                e.printStackTrace();
                table = new JTable(model);
            }
     
            add(new JScrollPane(table), BorderLayout.CENTER);
     
            pack();
            setVisible(true);
        }
     
        private TableColumnModel loadTableColumnModel() throws Exception {
            ObjectInputStream ois = new ObjectInputStream(new FileInputStream(
                    "c:/jtable.sav"));
            try {
                return (TableColumnModel) ois.readObject();
            } finally {
                if (ois != null) {
                    ois.close();
                }
            }
        }
     
        public static void main(String[] args) {
            new TableStore();
        }
    }

    Danke, Du bist wie immer die Hilfe in letzter Not oder in einfachster Form.

    Ich hätte das ganze jetzt von Hand in Preferences eingetragen
     

  7. #7
    Registriert seit
    Feb 2004
    Beiträge
    592
    Man sollte bei dem Beitrag vielleicht noch die Sekunden mitspeichern. Wie Du siehst reichen die Minuten nicht mal mehr aus
     

  8. #8
    Registriert seit
    Feb 2004
    Beiträge
    592
    Ich habe als ColumnIdentifiers Objecte übergeben die aus einem ResourceBundle das jeweilige sprachspezifische Label herausnehme (toString()). Kann ich jetzt den Header einer Tabelle neu zeichnen, d.h. die toString() wird wieder aufgerufen ohne, dass die Spalten resized werden?

    Danke
     

Ähnliche Themen

  1. Rückgabe der ID beim persistieren einer Entity
    Von enrix im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 1
    Letzter Beitrag: 27.08.10, 13:43
  2. JTable Größe an Frame automatisch anpassen
    Von RalU im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 30.01.10, 14:52
  3. feste Größe - JFrame + JTable - horiz. Scrollpane
    Von brandgefahr123 im Forum Java
    Antworten: 0
    Letzter Beitrag: 02.11.07, 00:25
  4. Größe von JTextField mit Größe von JTable syncronisieren?
    Von Geri_m1 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 26.07.07, 10:58
  5. Antworten: 0
    Letzter Beitrag: 20.10.04, 16:56