tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
381
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    exphertle exphertle ist offline Rookie
    Registriert seit
    Dec 2008
    Beiträge
    9
    Hallo!

    Ich habe ein Problem mit einem selbstgeschriebenem TableModel.
    Ich möchte aus einer Tabelle (aus MySql-DB) Datensätze in ein JTable schreiben.
    Hab dazu ein eigenes TableModel das von AbstractTableModel erbt.
    Quelltext siehe unten.
    Es funktioniert auch soweit, nur wenn ich das mehrmals hintereinander mache, datet er immer alle eingefügten Zeilen ab.
    funktioniert über JDialog.

    Ich hoffe das Problem ist rübergekommen.

    Um jede Hilfe wäre ich dankbar.
    Mir sind die Ideen ausgegangen

    Gruß


    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
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.table.*;
    import java.sql.*;
    import java.util.*;
        public class ResultSetTableModel extends AbstractTableModel {
     
            private ResultSet rs;
            private ResultSetMetaData rsm;
            private Vector tmp;
            private boolean isEditable;
            
            public ResultSetTableModel(ResultSet rs) {
                this.rs = rs;
                try {
                    tmp = new Vector();
                    rsm = rs.getMetaData();
                    
                    while (rs.next()) {
                        Object[] row = new Object[rsm.getColumnCount()];
                        for (int j = 0; j < row.length; j++) {
                            row[j] = rs.getObject(j + 1);
                        }
                        tmp.add(row);
                    }
                } catch (Exception e) {
                    System.out.println("Error: " + e);
                }
            }
     
        public void setIsEditable(boolean isEditable) {
            this.isEditable = isEditable;
        }
            
            
            
            public int getRowCount() {
                return tmp.size();
            }
     
            public int getColumnCount() {
                try {
                    return rsm.getColumnCount();
                } catch (Exception e) {
                    System.out.println("Error: " + e);
                    return 0;
                }
            }
     
            public Object getValueAt(int row, int col) {
                if (row < tmp.size()) {
                    return((Object[])tmp.get(row))[col];
                } else {
                    return null;
                }
            }
     
            public String getColumnName(int c) {
                try {
                    return rsm.getColumnName(c + 1);
                } catch (Exception e) {
                    System.out.println("Error: " + e);
                    return null;
                }
            }
            
            public void addRow(Object[] add){
                tmp.add(add);
                fireTableDataChanged();
                fireTableRowsInserted(tmp.size()-1, tmp.size()-1);
                
            }
            
            public void setValueAt(Object aValue, int rowIndex, int colIndex){
                ((Object[])tmp.get(rowIndex))[colIndex] = aValue;
                fireTableCellUpdated(rowIndex, colIndex);
            }
            
            public boolean isCellEditable(int row, int col){
                return isEditable;
            }
            
            public Vector getDataVector(){
                return tmp;
            }
            
            public void removeRow(int row){
                tmp.removeElementAt(row);
                fireTableRowsDeleted(row, row);
            }
        }
     

  2. #2
    pelewee pelewee ist offline Grünschnabel
    Registriert seit
    Oct 2004
    Beiträge
    3
    Hi,

    hätte da noch eine Frage. Werden in der Tabelle nach dem JDialog alle Datensätze in diese Tabelle "geschrieben"?
    Falls ja, dann wäre die folgende Lösung nicht die beste aber es würde funktionieren.
    Lösch einfach den momentan vorhandenen Inhalt der Tabelle bevor die Tabelle aktualisiert wird.
    Wenn du beim JDialog auf "ok" klickst, dann könnten zuerst die Zellen der Tabelle gelöscht und danach wieder aktualisiert werden.

    Gruß, Mike
     

  3. #3
    exphertle exphertle ist offline Rookie
    Registriert seit
    Dec 2008
    Beiträge
    9
    es wid nur die ausgewählte Reihe in die andere Tabelle mit angehängt.

    Ich vermute, dass der das nicht sauber abschließt, oder irgendwie so ein puffer hat.
     

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 09.05.08, 01:54
  2. JTable mit .addRow updaten
    Von Soulflyer84 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 05.01.07, 20:35
  3. JTable addRow Problem
    Von xeal im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 31.01.06, 15:08
  4. Problem mit eigenem ColoredRenderer
    Von jorgeHX im Forum Java
    Antworten: 6
    Letzter Beitrag: 08.08.05, 10:47
  5. Problem mit eigenem Sub
    Von Stephan Boettcher im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 14.06.04, 20:37

Stichworte