jtable aktualisieren ?
Geizhals » Forum » Programmierung » jtable aktualisieren ? (16 Beiträge, 123 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
jtable aktualisieren ?
20.09.2005, 13:44:56
Hi!

Ich hab da ein mittelgrosses Problem ;-)
Meine JTable aktualisiert sich nicht von selbst. Ich muss 2 mal in die JTable klicken damit sie sich aktualisiert.

Sie wird beim Start gefüllt und während der Laufzeit ändert sich der Inhalt der Hashmap, aber ich schaffe es nicht den Inhalt der JTable zu aktualisieren.

Bei der JTable kann sich die Zeilenanzahl verändern, die Spaltenanzahl bleibt immer gleich.

Ich überlege jetzt schon seit 3 Tagen komm aber keinen mm weiter :-(

Ich poste hier mal den code, vielleicht hat irgendwer eine Ahnung was da falsch ist :-(
--------------------------------------------------------------------------------------

import java.awt.*;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.*;
import java.util.*;

public class TimerDaten extends JFrame implements DBoxWatcherInterface {
    BorderLayout borderLayout1 = new BorderLayout();
    HashMap map;
    JTable timerTable;
    DBox getMap = new DBox();
    MyTableModel x;
    TableSorter sorter;
    JScrollPane scrollPane;

    public TimerDaten() {
        try {
            jbInit();
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }

    private void jbInit() throws Exception {
        map = getMap.map;
        x = new MyTableModel();
        sorter = new TableSorter(new MyTableModel());
        timerTable = new JTable(sorter);
        sorter.setTableHeader(timerTable.getTableHeader());
        sorter.setSortingStatus(0,1);
        timerTable.setPreferredScrollableViewportSize(new Dimension(500, 70));
        scrollPane = new JScrollPane(timerTable);
        this.getContentPane().add(scrollPane);
    }

    public void getHashmap(HashMap map2) {
           this.map = map2;
           x.tableUpdate();
    }

    class MyTableModel extends AbstractTableModel{
        private String[] spaltenNamen = {"Nr.", "Wdh.", "Start-Zeit","Stop-Zeit","Sender"};
        private Object[][] zeilen;
        private Object[] zeilenKeys;
        public MyTableModel(){
            zeilen = new Object[map.size()][5];
            zeilenKeys= map.keySet().toArray();
            for(int zeile=0; zeile<map.size(); zeile++){
                zeilen[zeile][0] = ((DboxTimerDaten)(map.get(zeilenKeys[zeile]))).getEventId();
                zeilen[zeile][1] = ((DboxTimerDaten)(map.get(zeilenKeys[zeile]))).getEventRepeat();
                zeilen[zeile][2] = ((DboxTimerDaten)(map.get(zeilenKeys[zeile]))).getAlarmTime();
                zeilen[zeile][3] = ((DboxTimerDaten)(map.get(zeilenKeys[zeile]))).getStopTime();
                zeilen[zeile][4] = ((DboxTimerDaten)(map.get(zeilenKeys[zeile]))).getData();
            }
        }

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

        public void tableUpdate() {
            ((AbstractTableModel)timerTable.getModel()).fireTableDataChanged();
            getContentPane().repaint();
            timerTable.repaint();
            repaint();
        }

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

        public String getColumnName(int col) {
            //System.out.println(spaltenNamen[col]);
            return spaltenNamen[col];
        }

        public Object getValueAt(int row, int col) {
            this.zeilen = new Object[map.size()][5];
            this.zeilenKeys = map.keySet().toArray();
            for (int zeile = 0; zeile < map.size(); zeile++) {
                zeilen[zeile][0] = ((DboxTimerDaten) (map.get(zeilenKeys[zeile]))).
                                   getEventId();
                zeilen[zeile][1] = ((DboxTimerDaten) (map.get(zeilenKeys[zeile]))).
                                   getEventRepeat();
                zeilen[zeile][2] = ((DboxTimerDaten) (map.get(zeilenKeys[zeile]))).
                                   getAlarmTime();
                zeilen[zeile][3] = ((DboxTimerDaten) (map.get(zeilenKeys[zeile]))).
                                   getStopTime();
                zeilen[zeile][4] = ((DboxTimerDaten) (map.get(zeilenKeys[zeile]))).
                                   getData();
            }
            return zeilen[row][col];
        }
    }
}
--------------------------------------------------------------------------------------

Vielen Dank im voraus
Frankster

20.09.2005, 13:51 Uhr - Editiert von Frankster, alte Version: hier
Antworten PM Übersicht Chronologisch
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung