events und streams. ein virtueller verstärker stream (fast immer daten) event (fast nie daten)...
TRANSCRIPT
![Page 1: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/1.jpg)
Events und Streams
![Page 2: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/2.jpg)
Ein „Virtueller Verstärker“
Stream
(fast
immer D
aten)
Event(fast nie Daten)
Stream
(fast imm
er Daten)
![Page 3: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/3.jpg)
Main Loop, go home
main{RepeatMyEvent=CheckNextEvent()If(MyEvent=null)
{Abarbeiten}Else
{HandleEvent(myEvent)}Until(quit)
![Page 4: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/4.jpg)
Klassische Abfragen
EventSource
GetStatus
HauptprogrammDas Hauptprogramm fragt zu bestimmten Zeiten den Status aller möglichen EventSources ab.
![Page 5: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/5.jpg)
Events und Listeners
EventSource
Event
ListenerDie EventSource muss den Listener kennen !
![Page 6: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/6.jpg)
Beispiel
Button
ActionEvent
ActionListeneraddActionlistener(ActionListener)MyListener=ActionListener
Falls was passiert:MyListener.actionPerformed()
actionPerformed(ActionEvent)
![Page 7: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/7.jpg)
In unserem Fall
• FloatEvents
• BooleanEvents =? ActionEvents
• StringEvents =? SocketEvents
• IntegerEvents =? AdjustmentEvents
![Page 8: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/8.jpg)
FloatControl
• FloatControl?
• FloatListener
![Page 9: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/9.jpg)
FloatControl?
• ansprechendes Design
• intuitive Kontrollelemente
![Page 10: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/10.jpg)
Aufrufende Klasse
FloatKreis
FloatListener
EventListener
FloatPanel
FloatControl
erst
ellt
erst
ellt
setValue
FloatLED
Event
Event
Event
Event
extends
![Page 11: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/11.jpg)
Events
EventFloatListener
FloatPanel
Aufrufende Klasse
EventE
vent
Event
Event
![Page 12: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/12.jpg)
package nano.awt;import java.util.*;
public interface FloatListener extends EventListener{public void FloatEventPerformed(double zahl);
}
FloatListener
![Page 13: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/13.jpg)
Klasse FloatDesign
• Definiert Farben der Kontrollelemente wie z.B. Zeiger-und Kreisfarbe, sowie -grösse
• Über Konstruktoren verschiedene Varianten vordefiniert
• Über Methoden auf einzelne Einstellungen zugreifbar
• weiteres Vorgehen und Zukunft der Klasse noch nicht klar, u.a. auch wegen Designern
![Page 14: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/14.jpg)
Vorteile
• Möglichkeit der individuellen Gestaltung der Kontrollelemente (Farben)
• nur eine einmalige Definition nötig
• wenn gewünscht für alle Elemente gültig
![Page 15: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/15.jpg)
Technische Spezifikationenvon TCP / IP
![Page 16: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/16.jpg)
Was ist ein „Socket“ ?
• Engl. „Stecker“, ist aber eher ein Kabel.Kommt von den Inet-Ports.
• Vollständige Adressierung besteht ausIP-Nummer und Port-Nummer
• Eine bidirektionale Verbindung zwischen zwei Internet-Ports.
![Page 17: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/17.jpg)
![Page 18: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/18.jpg)
Verbindungsaufbau
• Einer ist Server (Derjenige der auf die Verbindung gewartet hat)
• Einer ist Client (Derjenige der die Verbindung Initiiert hat)
• Handshaking
• Pakete werden ausgetauscht (vgl. UDP)
![Page 19: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/19.jpg)
Virtuelle Kabel
![Page 20: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/20.jpg)
Socket als Kabel
• LabView als schlechtes Vorbild
Wir nehmen Streams anstelle von Zahlen
Jede Steckdose erhält den Befehl plug(DataLine)
Sie hat eine Instanzvariable MyDestination
![Page 21: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/21.jpg)
Abstrakte Klasse „DataLine“ ?
• Zwei Implementierungen:– TCP / IP Socket (InetAddr, Port, R/W)– Pipe (Pointer auf Pufferbereich)– (+) Schnellere Performance
• Eine einzige Implementierung:– TCP / IP Socket (InetAddr, Port, R/W)– (+) Universeller, „The Net is the Computer“
![Page 22: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/22.jpg)
Stecker-Metapher
• Signal kommt immer aus einer Dose (weiblich)
• Anzeigegeräte (Oszi, Fluke, etc.) haben nur männliche Stecker
• Damit ist jeder Port männlich oder weiblich
![Page 23: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/23.jpg)
![Page 24: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/24.jpg)
Signale in „Sockets“
• Elektronisches Signal ist eine FunktionR R t U(t)
• Das Signal soll sich selbst beschreiben.
• Beschreibung im Ortsraum
– Langsame Signale, (Tiefpass)
• Beschreibung im Fourier-Raum
– Schnelle Signale, (Hochpass)
II
![Page 25: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/25.jpg)
Doppelstecker
![Page 26: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/26.jpg)
Selbstbeschreibendes Signal
• TCP/IP Päckchen von konstanter Grösse(Derzeit 256Byte)
• In JAVA: Werte von –128 bis +127 !!• Erstes Byte=-128 bedeutet
Achtung: Beschreibung• Zweites Byte gibt an, wieviele Pakete
Beschreibung sind.
![Page 27: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/27.jpg)
Wie beschreibt sich das Signal
• XML-Text oder was????
• Beschreibung soll beliebig offen sein.
![Page 28: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/28.jpg)
Dokumentation undKooperation miteinem Classpath
![Page 29: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/29.jpg)
JAVADOC
• Auf Nanoworld2 unterD:\development\jdk1.3\docs\tooldocs\win32\javadoc.html (Muss noch veröffentlicht werden)
• Pakete müssen einzeln angegeben werden
• Bilder und gewisse Tags sind möglich.
![Page 30: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/30.jpg)
![Page 31: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/31.jpg)
Struktur unseres Classpath
• nano.paketname.*
• Paketname sollte dem von java.lang entsprechen.– Bsp. nano.awt.*;
![Page 32: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/32.jpg)
Wer darf in den Classpath ?
• Fertige Klassen (Das bedeutet: Jede Änderung muss mit einer Versionsänderung und dem zugehörigen Datum verbunden sein)
• Vollständig dokumentiert in Javadoc.
• Alle modifiers sind durchdacht.
• Alle Setter und Getter sind vorhanden.
![Page 33: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/33.jpg)
Datenbanken
Client Client
ServerController
Experiment
![Page 34: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/34.jpg)
Was für Klassen gibt es schon?
Beachte die strikte Trennung vonFunktionalität und GUI
Steuerung erfolgt über Kommandos
GUI generiert Kommandos(vgl. TCL/TK unter UNIX)
![Page 35: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/35.jpg)
Vorhandene Pakete
• Package nano.awt(Alles was mit GUI zu tun hat)
• Package nano.net(Alles was mit Netzwerk und Streams zu tun hat)
• Package nano.compute(Alles was………..weiss auch noch nicht)
![Page 36: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/36.jpg)
Das Paket nano.compute
![Page 37: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/37.jpg)
Parser-Problem
• Wir brauchen eine Zuordnung String-Methode
• Realisiert analog awt.event(Event-Methode)
![Page 38: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/38.jpg)
![Page 39: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/39.jpg)
![Page 40: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/40.jpg)
Simulator API
– AddCommand(String, CommandExecutor)– AddInt– AddDouble– AddString– AddBoolean– SetBoolean(String, boolean), sb(), etc.
![Page 41: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/41.jpg)
![Page 42: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/42.jpg)
Sprachdefinition Basiswortschatz
• Definiert in der Klasse nano.compute.Simulator:– Set
• Parameter: name, valueBeispiel: command=set, name=speed, value=131.5
– Get• Parameter: name
– Stop• Parameter: keine
– Start• Parameter: keine
![Page 43: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/43.jpg)
Nano.net
![Page 44: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/44.jpg)
![Page 45: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/45.jpg)
EventClientLocal Port
Remote IP,Port
StreamClientLocal Port
Remote IP,Port
EventServerLocal Port
StreamServerLocal Port
EventSocketListener
EventSocketListener
put
put
plug
![Page 46: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/46.jpg)
![Page 47: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/47.jpg)
EventClient
Pool (De- & Multiplexer)
EventClient
StreamClient
EventClient
StreamClient
EventClient
StreamClient
EventSocket-Listener
EventClient
StreamServer
MySQL
www
www
www
www
www
www
www
www
![Page 48: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/48.jpg)
Pool_UI
• Pool_UI?
• Eigenarten der Tabellen in Java
![Page 49: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/49.jpg)
Klasse Pool
• Verwaltung und Bereitstellung von Benutzerdaten, wie:– Anzahl der User im Pool– Name, IP-Adresse und Portnummer– User connected?– addUser()
![Page 50: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/50.jpg)
Pool_UI
• Graphische Benutzeroberfläche der Klasse Pool
![Page 51: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/51.jpg)
![Page 52: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/52.jpg)
![Page 53: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/53.jpg)
Pool_UI Pool
TableModel
JTable
setUser
Tabelle
erst
ellt
Frägt ab
![Page 54: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/54.jpg)
Tabellen
•Model - Viewer Konzept
![Page 55: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/55.jpg)
Früher
DefaultTableModelDaten JTable
![Page 56: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/56.jpg)
Heute
TableModel
Model Viewer
Daten
![Page 57: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/57.jpg)
Zuständigkeit
• TableModel:
Datenerstellung, -aufbereitung, -berechnung
• JTable:
Darstellung der Daten
![Page 58: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/58.jpg)
Vorteile des Model-Viewer Konzeptes
• skalierbar
• Einfachere Handhabung von dynamischen und editierbaren Tabellen
• Möglichkeit von verschiedenen Viewern
• Geschwindigkeit
![Page 59: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/59.jpg)
How To
![Page 60: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/60.jpg)
AbstractTableModel
public abstract class AbstractTableModel extends Objects implements TableModel
• stellt default Implementierungen für die meisten Methoden des TableModel zur Verfügung
• kümmert sich um die Listener und Events
![Page 61: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/61.jpg)
Erstellen einer Tabelle mithilfe des AbstractTableModels
Implementation von folgenden Methoden notwendig:
• public int getRowCount();
• public int getColumnCount();
• public Object getValueAt(int row, int column);
![Page 62: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/62.jpg)
Weitere nützliche Methoden
• public String getColumnName(int col)
• public String getColumnCount() / getRowCount
• public Class getColumnClass(int col)
• public boolean isCellEditable(int row, int col)
![Page 63: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/63.jpg)
Erstellen einer 10*10 - Tabelle
TableModel beispielModel = new AbstractTableModel(){
public int getRowCount() {return 10;}
public int getColumnCount() {return 10;}
public Object getValueAt(int row, int column) {return new Integer(row*col);}
}
JTable table = new JTable(beispielModel);
JScrollPane scrollpane = new JScrollPane(table);
![Page 64: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/64.jpg)
TableCellRenderer
• Renderer: Zuständig für die Darstellung der Zellen
• JTable besitzt Standard-Renderer
• Möglichkeit der Individuellen Darstellung von Zellen
• Nachteil: recht grosser Aufwand für Effizienz nötig
![Page 65: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/65.jpg)
Verschieben der Kolonnen
![Page 66: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/66.jpg)
• Jede Kolonne eigene ID (default: Name der Kolonne)
• Vorteile: Verschieben der Kolonnen ohne sich um die Änderung der Reihenfolge kümmern zu müssen
-> JTable rechnet intern mit ID und stellt es richtig dar
![Page 67: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/67.jpg)
Zusammenarbeit mit demSmartSPM Projekt
Hardware-Programmierung
![Page 68: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/68.jpg)
![Page 69: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/69.jpg)
Stand der Dinge
HW.DLL
GUI.DLL
MIDDLE.DLLCOMM.DLL
Mainframe
TCP/IP
![Page 70: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/70.jpg)
Measuring with Super-DAQTM (PCI or USB)
N-Channel Ultrafast AD4096 bit, 1024 GHz
M-Channel Ultrafast DA4096 bit, 1024 GHz
n-Channel Ultraslow Human Input m-Channel Ultraslow Human Output
TerraMemory
![Page 71: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/71.jpg)
Schichtmodell SuperDAQ
HW.DLL
BF1.DLL BF2.DLL BF3.DLL BF4.DLL BF5.DLL
ADA
Funktionalitäts-Layer
Hardware-Layer
Hardware(1 Layer)
Verarbeitungs-Layer
UI-Layer JAVA - TCL/TK – TCP/IP - HTTP
JAVA C Fortran
![Page 72: Events und Streams. Ein Virtueller Verstärker Stream (fast immer Daten) Event (fast nie Daten) Stream (fast immer Daten)](https://reader036.vdocuments.net/reader036/viewer/2022062622/55204d6349795902118b7fb3/html5/thumbnails/72.jpg)
Virtueller SuperDAQ
DSP Code
ADA ADAADA
DSP Code DSP Code
HW.DLL
BF1.DLL
HW.DLL HW.DLL
BF2.DLL BF3.DLL BF4.DLL BF5.DLL
Virtual SuperDAQ
JAVA - TCL/TK – TCP/IP - HTTP
JAVA C Fortran
Funktionalitäts-Layer
Hardware-Layer
Hardware(2 Layers)
Verarbeitungs-Layer
UI-Layer