Abstract Table Model

Status
Nicht offen für weitere Antworten.
J

Jens

Gast
Hallo,
ich hab folgendes Problem.
Ich hab ein Programm geschrieben und dazu ne GUI erstellt. In der Gui werden einzelne Frames geöffnet und in den Frames werden Tabellen vom Typ Abstract Table Model angezeigt. Die Tabellen werden mit Daten aus ner Datenbank gefüllt.
Jetzt mein genaueres Problem:
Ich möchte die Daten in den Tabellen ändern können.
Ich weiß nur nicht wie ich das machen kann das ich die einzelnen Zellen editieren kann und das auch da stehen bleibt.

Mit der Methode...

Code:
public boolean isCellEditable(int row, int column)
{
    return true;
}

...kann man ja einstellen das die Zellen edititierbar sind. Nur das was ich da eintrage bleibt da nicht stehen. Sobald ich eine andere Zelle selektiere verschwinden meine Änderungen. Ich wollte das dann so haben das die Änderungen stehen bleiben und ich dann nen Button in mein Frame einfüge der die Änderungen im Table dann auch in die Datenbank reinschreibt.
Vielleicht kann mir ja jemand helfen.
Vielen Dank schonmal.
Gruß,
Jens
 

Mick

Bekanntes Mitglied
Hi,

Du must zusätzlich die beiden Methoden

Code:
public Object getValueAt(int row, int col)

und

public void setValueAt(Object value, int row, int column)

überschreiben.

Grüße,
Mick
 
R

Roar

Gast
dass das nicht dirn stehen bleibt ist mir neu. normalerweise nicht. holst du die daten vielleicht nach jeder änderung wieder neu in die tabelle? ist da irgendein listener der da deine änderungen abfängt oder so? denn dass es wirklich am AbstractTableModel liegt glaub ich nicht...

edit: ahja man lese die API. hm ich hab immer das DefaultTableModel verwendet...
 
J

Jens

Gast
Also ich hab im Konstruktor ne trycatch-Anweisung wo ich ein Array mit den Daten aus der Datenbank fülle.
In der getValueAt Methode pack ich dann die einzelnen Datensätze aus dem Array in die Tabelle.
Wie muss ich denn jetzt die setValueAt Methode überschreiben????
Verstehe das nicht so ganz.
 

Mick

Bekanntes Mitglied
Beispiel:

Code:
public void setValueAt(Object value, int row, int col) 
    { 
        rowData[row][col] = value; // je nachdem, wie Du Deine Daten hälst
        fireTableCellUpdated(row, col); 
    }

Grüße,
Mick
 
J

Jens

Gast
Also die Klasse sieht bis jetzt so aus:
Code:
public class ActInputScreen extends JInternalFrame
{
    UpdateMode[] allUpdateMode;

    JTable table;
    JComboBox combo = new JComboBox();


    public ActInputScreen(Database database)
    {
        super("Aktualisierungs Schlüssel",
              true, //resizable
              true, //closable
              false, //maximizable
              true);//iconifiable);

        try
         {
             // Methode aus DBMUpdateMode wird aufgerufen.
             // Array mit allen Aktualisierungsschlüsseln wird erstellt
             allUpdateMode = new DBMUpdateMode().makeUpdateModes(database);
         }

         catch(Exception e)
         {
             e.printStackTrace();
         }


        // neuer Container für die GUI wird erstellt
        Container contentPane = getContentPane();

        // dem Container wird ein Layout zugeordnet
        contentPane.setLayout(new BoxLayout(contentPane,3));

        // Table Models werden erstellt
        actTable actModel = new actTable();
        JTable act = new JTable(actModel);

        // Scroll Panes werden den Table Models zugeordnet
        contentPane.add(new JScrollPane(act));

        // die Auto-Resize Funktion der JTables wird disabled
        act.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

    }


//-----------------------------------------------------------------------------------------------------------

/*
* Table Model für die Tabellen wird erstellt.
* Es werden dabei die ID, der Tabellenname, der Rang und der Aktualisierungsschlüssel angezeigt
*/

    class actTable extends AbstractTableModel
    {
        final String[] columnNames = {"Akk-Schlüssel",
                                      "Kommentar"
                                       };

        public boolean isCellEditable(int row, int column)
        {
            return true;
        }


        public int getColumnCount()
        {
            return columnNames.length;
        }

        public int getRowCount()
        {
            return allUpdateMode.length;
        }

        public String getColumnName(int col)
        {
            return columnNames[col];
        }

        public Object getValueAt(int row, int col)
        {
            switch (col)
            {
                case 0:
                    return allUpdateMode[row].getKey();
                case 1:
                    return allUpdateMode[row].getKommentar();

                default: return null ;
            }

        }

    }
}

Jetzt fehlt mir nur noch die setValueAt Methode. Wie passe ich die denn an???
 

Mick

Bekanntes Mitglied
Jens hat gesagt.:
Code:
/*
* Table Model für die Tabellen wird erstellt.
* Es werden dabei die ID, der Tabellenname, der Rang und der Aktualisierungsschlüssel angezeigt
*/

    class actTable extends AbstractTableModel
    {
        final String[] columnNames = {"Akk-Schlüssel",
                                      "Kommentar"
                                       };

        public boolean isCellEditable(int row, int column)
        {
            return true;
        }


        public int getColumnCount()
        {
            return columnNames.length;
        }

        public int getRowCount()
        {
            return allUpdateMode.length;
        }

        public String getColumnName(int col)
        {
            return columnNames[col];
        }

        public Object getValueAt(int row, int col)
        {
            switch (col)
            {
                case 0:
                    return allUpdateMode[row].getKey();
                case 1:
                    return allUpdateMode[row].getKommentar();

                default: return null ;
            }

        }

      public void setValueAt(Object value, int row, int col) 
    { 
        if ( col == 0 ) 
           allUpdateMode[row].setKey(value);
        if ( col == 1 )
           allUpdateMode[row].setKommentar(value);
        fireTableCellUpdated(row, col); 
    } 

}

So in etwa. Falls das nicht klappt, müsste ich wissen, wie allUpdateMode aufgebaut ist, und welche Methoden es bereitstellt.

Grüße,
Mick
 
J

Jens

Gast
Vielen Dank.
Es klappt soweit.
Musste nur noch den value-Wert als String casten und dann ging es
Vielen Dank.
Gruß,
Jens
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Fehlermeldung: ". is not abstract" AWT, Swing, JavaFX & SWT 5
M Graphics2D - abstract void draw(.) AWT, Swing, JavaFX & SWT 2
C Default table model aktualisieren AWT, Swing, JavaFX & SWT 7
J Anbindung Textfeldklasse an Table funktioniert nicht AWT, Swing, JavaFX & SWT 3
A JavaFX Daten in eine HTML-Table mit JS schreiben AWT, Swing, JavaFX & SWT 3
S JavaFX Boolean ändern Table View AWT, Swing, JavaFX & SWT 14
B JavaFX JavaFX Table gespeichertes Wert auswählen/anvisieren AWT, Swing, JavaFX & SWT 3
C TableModel zugehörige Table ermitteln AWT, Swing, JavaFX & SWT 3
T Table Renderer AWT, Swing, JavaFX & SWT 2
T Default Table wird nicht angezeigt AWT, Swing, JavaFX & SWT 15
E JavaFX Von der Table-Cell zur Row AWT, Swing, JavaFX & SWT 0
A JavaFX Table Delete Row AWT, Swing, JavaFX & SWT 5
N JavaFX Problem mit table multiple selection AWT, Swing, JavaFX & SWT 5
D JavaFX Table Filter AWT, Swing, JavaFX & SWT 4
R Swing JTable : Header der Spalten ergänzen mit caption (wie bei html-table) AWT, Swing, JavaFX & SWT 2
I JTable: Doppelklick auf Table soll neues Fenster öffnen und Daten aus JTable anzeigen AWT, Swing, JavaFX & SWT 4
J JTabbedPane: table in new tab: tooltip benutzt die column-widths von table in erstem geöffneten tab AWT, Swing, JavaFX & SWT 17
G Border der Komponente bei Table CellRenderer überschreiben AWT, Swing, JavaFX & SWT 0
M MouseListener auf table oder scrollPane AWT, Swing, JavaFX & SWT 11
T SWT checkbox in table AWT, Swing, JavaFX & SWT 6
C JTable Drag and Drop von Zeilen innerhalb einer Table AWT, Swing, JavaFX & SWT 2
Z JavaFX Table mit MenuButton AWT, Swing, JavaFX & SWT 6
T SWT Table (mit Spinner Spalte) Daten auslesen AWT, Swing, JavaFX & SWT 4
E extended Swing Table AWT, Swing, JavaFX & SWT 2
J Einträge aus Table löschen ohne Exception AWT, Swing, JavaFX & SWT 6
T Table-Zeilen mit Thread einfärben AWT, Swing, JavaFX & SWT 15
E SWT Popupmenu auf der Überschrift eines swt.widgets.Table verhindern? AWT, Swing, JavaFX & SWT 3
Nicklas2751 Table View zeigt keinen Inhalt nur leere Zeilen AWT, Swing, JavaFX & SWT 2
reibi SWT SWT - Table AWT, Swing, JavaFX & SWT 8
A Swing JButton in einer Table Cell AWT, Swing, JavaFX & SWT 9
lumo SWT JFace Databinding +Custom Table AWT, Swing, JavaFX & SWT 2
M SWT - Table deselecten AWT, Swing, JavaFX & SWT 2
R SWT | Table | Zeilenkopf AWT, Swing, JavaFX & SWT 2
M SWT Table disabled und Scrollbar enabled AWT, Swing, JavaFX & SWT 11
C [SWT] Widget Table verliert nach Sortierung farbige / eingefärbter Background / Zellen AWT, Swing, JavaFX & SWT 3
L Inhalt einer table löschen AWT, Swing, JavaFX & SWT 2
L Jbutton in table AWT, Swing, JavaFX & SWT 2
lumo SWT Table Selection Color +Focus Out AWT, Swing, JavaFX & SWT 14
S SWT Maximum an Items in Table? AWT, Swing, JavaFX & SWT 2
F SWT table refresh per Thread AWT, Swing, JavaFX & SWT 2
Q SWT Mindetsgröße für Table AWT, Swing, JavaFX & SWT 7
1 Swing manual resize table column to min size AWT, Swing, JavaFX & SWT 2
hdi SWT SWT Table: 2 kleine Probleme AWT, Swing, JavaFX & SWT 4
S SWT Table Größen verändern AWT, Swing, JavaFX & SWT 10
lumo SWT Table und Klassen AWT, Swing, JavaFX & SWT 14
lumo SWT Table CellEditor - knifflig AWT, Swing, JavaFX & SWT 35
M SWT Table mit Columns und Items AWT, Swing, JavaFX & SWT 3
L Java Table AWT, Swing, JavaFX & SWT 4
F Swing J(X)Table Spalten umsortieren NUR im View (Wie finde ich eine Spalte nach Name?) AWT, Swing, JavaFX & SWT 3
A SWT Table mit Bildern und Checkboxes AWT, Swing, JavaFX & SWT 4
A SWT Table hat keine Scrollbar AWT, Swing, JavaFX & SWT 12
A SWT Table clearAll() und zurücksetzen. AWT, Swing, JavaFX & SWT 3
K SWT Table Modell / Datenmodell AWT, Swing, JavaFX & SWT 14
S Table oder TableModel so ueberschreiben, dass Columns minimale Breite haben? AWT, Swing, JavaFX & SWT 2
T SWT - Table Events AWT, Swing, JavaFX & SWT 3
B SWT - Drag & Drop innerhalb einer Table AWT, Swing, JavaFX & SWT 3
T Fokus auf CB in Table mit beliebiger Taste AWT, Swing, JavaFX & SWT 12
S swt table mit checkboxen: wie nachträglich im code setzen? AWT, Swing, JavaFX & SWT 6
S Seltsam: SWT Table zeigt keine Scrollbar an AWT, Swing, JavaFX & SWT 12
G SWT-Table sortieren AWT, Swing, JavaFX & SWT 12
T Input-Check bei Textfeldern in Table AWT, Swing, JavaFX & SWT 5
G SWT Table Controll AWT, Swing, JavaFX & SWT 7
L SWT-Table: Datum ausgeben? AWT, Swing, JavaFX & SWT 5
G Table in SWT AWT, Swing, JavaFX & SWT 2
S Table Row per Drag and Drop in andere Table schieben? AWT, Swing, JavaFX & SWT 14
S SWT Table - Wie Columns hinzufügen / entfernen AWT, Swing, JavaFX & SWT 3
K javax.swing.table.TableRowSorter AWT, Swing, JavaFX & SWT 13
I JComboBox in Table AWT, Swing, JavaFX & SWT 4
G wo wird die table mit daten gefüllt? oô AWT, Swing, JavaFX & SWT 4
S SWT Drag&Drop / Table AWT, Swing, JavaFX & SWT 9
E JTable-während der Einfügezeit der Zellen in die Table AWT, Swing, JavaFX & SWT 2
S table - combobox AWT, Swing, JavaFX & SWT 7
D Selection SWT Table AWT, Swing, JavaFX & SWT 5
D SWT Table AWT, Swing, JavaFX & SWT 5
P Table Layout remove()? AWT, Swing, JavaFX & SWT 2
W Zeile in Table (SWT) selektieren und auslesen AWT, Swing, JavaFX & SWT 4
G Dringend ! SWT-Table übernimmt Änderung nicht AWT, Swing, JavaFX & SWT 2
L Multiline Table AWT, Swing, JavaFX & SWT 3
R SWT: Icons im Table vor den Einträgen AWT, Swing, JavaFX & SWT 3
T mit rechter maustaste Table row selektieren AWT, Swing, JavaFX & SWT 2
F Zeilenhöhe bei SWT Table AWT, Swing, JavaFX & SWT 3
S Nochmal Spaltenbriete im Table AWT, Swing, JavaFX & SWT 2
G mal wieder table. AWT, Swing, JavaFX & SWT 3
V SWT Table mit SWT.CHECK AWT, Swing, JavaFX & SWT 2
P SWT table updaten AWT, Swing, JavaFX & SWT 7
S Frage zu Table(Column)Model AWT, Swing, JavaFX & SWT 3
J ScrollPanel mit 2 Table`s AWT, Swing, JavaFX & SWT 5
J Table Model AWT, Swing, JavaFX & SWT 2
T in einer Table soll jede zweite Zeile markiert werden AWT, Swing, JavaFX & SWT 3
E Inhalt einer Zelle eine Table in ein TextField bekommen AWT, Swing, JavaFX & SWT 24
A ViewController (IFrame) > Jdialog > Model AWT, Swing, JavaFX & SWT 1
J Saubere Trennung Model, View, Controller Javafx AWT, Swing, JavaFX & SWT 10
F JComboBox und Model AWT, Swing, JavaFX & SWT 10
S UI Model Binding AWT, Swing, JavaFX & SWT 7
F jTree und das Model aus einer eigenen Klasse AWT, Swing, JavaFX & SWT 1
ralfb1105 JavaFX Exception Message von Model Class via Controller in View darstellen AWT, Swing, JavaFX & SWT 39
ralfb1105 JavaFX MVC: Thread in Model Class mit Ausgabe in TextArea AWT, Swing, JavaFX & SWT 10
B JavaFX mvvmfx - Model AWT, Swing, JavaFX & SWT 3
J JavaFX - mehrere Views, Model durchreichen AWT, Swing, JavaFX & SWT 10
T JavaFX Model Daten übergeben AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben