Die Klasse DBox erzeugt eine Hashmap und füllt diese. Per Interface übertrage ich die Hashmap in die Klasse TimerDaten.
In der Klasse DBOX mach ich folgendes
Klasse TimerDaten speichert die übertragene Hashmap in ihrer eigene Hashmap und ruft anschliessend die Methode timerUpdate auf, wo die fireTableDataChanged() Methode drinnen steht.
Die Map wird an die Klasse TimerDaten wirklich übertragen. Nur die JTable übernimmt nicht die neuen Hashmap daten.
Hier der komplette Code der Klasse TimerDaten
Vielen Dank im voraus
Ich steh da voll auf der Leitung, so ein GUI Programmieren ist nicht so einfach *g*
In der Klasse DBOX mach ich folgendes
Code:
DboxWatcherInterface obj = new TimerDaten();
obj.setHashmap(map);
Klasse TimerDaten speichert die übertragene Hashmap in ihrer eigene Hashmap und ruft anschliessend die Methode timerUpdate auf, wo die fireTableDataChanged() Methode drinnen steht.
Code:
public void setHashmap(Hashmap map) {
this.map = map;
x.tableUpdate();
}
Die Map wird an die Klasse TimerDaten wirklich übertragen. Nur die JTable übernimmt nicht die neuen Hashmap daten.
Hier der komplette Code der Klasse TimerDaten
Code:
package dboxwatcher2_0;
import java.awt.*;
import javax.swing.*;
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;
MyTableModel x;
TableSorter sorter;
public TimerDaten() {
try {
jbInit();
} catch (Exception exception) {
exception.printStackTrace();
}
}
private void jbInit() throws Exception {
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));
JScrollPane scrollPane = new JScrollPane(timerTable);
getContentPane().setLayout(borderLayout1);
this.getContentPane().add(scrollPane);
}
public void getHashmap(HashMap map) {
System.out.println("GetHashmap");
this.map = map;
x.tableUpdate();
}
class MyTableModel extends AbstractTableModel{
private String[] spaltenNamen = {"Nr.", "Wdh.", "Start-Zeit","Stop-Zeit","Sender"};
private Object[][] zeilen = new Object[map.size()][5];
public MyTableModel(){
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() {
System.out.println("ICH BIN DA");
fireTableDataChanged();
}
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) {
//System.out.println(zeilen[row][col]);
return zeilen[row][col];
}
}
}
Vielen Dank im voraus
Ich steh da voll auf der Leitung, so ein GUI Programmieren ist nicht so einfach *g*