Einzelnen Beitrag anzeigen
Alt 21.09.2005, 13:51   #7
Frankster
Veteran
 
Registriert seit: 13.07.2002
Alter: 44
Beiträge: 242


Standard

Das ganze Funkt so.
Alle 5 Sekunden werden in einer anderen Klasse (KLASSE B) Methoden aufgerufen und in einer Methode dieser KLASSE B ist der Interface-Aufruf. Dieses Interface ruft in der TIMERDATEN Klasse die Methode
public void getHashmap(HashMap map) auf und übergibt ihr die neue HashMap. Somit hat die TIMERDATEN Klasse die neue Hashmap und soll auch die JTable aktualisieren.

So sieht der komplette Code meiner GUI Klasse aus

Code:
package dboxwatcher2_0;

import java.awt.*;

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

/**
 * 

Überschrift: </p>
 *
 * 

Beschreibung: </p>
 *
 * 

Copyright: Copyright (c) 2005</p>
 *
 * 

Organisation: </p>
 *
 * @author unbekannt
 * @version 1.0
 */
public class TimerDaten extends JFrame implements DBoxWatcherInterface  {
    FlowLayout borderLayout1 = new FlowLayout();
    HashMap map = new HashMap();
    JTable timerTable;
    DBox getMap = new DBox();
    MyTableModel x;
    TableSorter sorter;
    JScrollPane scrollPane;
    JButton button1 = new JButton("Klick mich");

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

    private void jbInit() throws Exception {
        this.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);
        getContentPane().setLayout(new FlowLayout());
        this.getContentPane().add(scrollPane);
        x.spaltenBreite();

    }

    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;
        public MyTableModel(){
            zeilen = new Object[map.size()][5];
            Object[] 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() {
            //System.out.println("Spalten" + spaltenNamen.length);
            return spaltenNamen.length;
        }

        public void tableUpdate() {
            sorter.fireTableDataChanged();
            fireTableDataChanged();
            ((AbstractTableModel)timerTable.getModel()).fireTableDataChanged();
            fireTableStructureChanged();
            System.out.println(timerTable.getModel());
            repaint();
        }

        public int getRowCount() {
            //System.out.println("Zeilen" + zeilen.length);
            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];
            Object[] 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];
        }

        public void spaltenBreite() {
            TableColumn column = null;
            for (int i = 0; i < getColumnCount(); i++) {
                column = timerTable.getColumnModel().getColumn(i);
                if (i == 0) {
                     column.setPreferredWidth(40);
                     column.setMaxWidth(50);
                     column.setMinWidth(25);
                 }
                 if (i==1) {
                     column.setPreferredWidth(40);
                     column.setMaxWidth(50);
                     column.setMinWidth(25);

                 }
             }
         }
    }
}
Frankster ist offline   Mit Zitat antworten