Java AWT alles wird transportabel?

Größe: px
Ab Seite anzeigen:

Download "Java AWT alles wird transportabel?"

Transkript

1 Java AWT alles wird transportabel? Axel-Tobias Schreiner, Universität Osnabrück Zu Java gehört das Abstract Window Toolkit zur Programmierung grafischer Ober flächen mit dem look and feel der jeweiligen Plattform. Dieser dritte Ar tikel in der Java-Serie gibt an einem einfachen Beispiel einen kleinen Eindruck davon, wie man mit dem AWT mehr oder weniger portabel arbeitet. Die Aufgabe Abbildung 1 zeigt, wie man Temperaturen von Celsius in Fahrenheit umwandeln könnte: 1 import java.io.*; 2 3 public class a { 4 public static void main (String args []) { 5 try { 6 DataInputStream in = new DataInputStream(System.in); 7 String line; 8 while ((line = in.readline())!= null) { 9 double celsius = new Double(line).doubleValue(); 10 System.out.println("\t" + (9./5. * celsius + 32.)); 11 } 12 } catch(exception e) { 13 e.printstacktrace(system.err); 14 } 15 } 16 } Abbildung 1: Umwandlung von Celsius in Fahrenheit In der Hauptschleife liest man eine Textzeile als String (1-8), wandelt ihren Inhalt in einen double-wert um (1-9), berechnet aus dieser Celsius-Angabe einen Fahrenheit- Wert und gibt ihn aus (1-10). Eingabe und Umwandlung als double können zu einer Exception führen, für die dann der Kontext ausgegeben wird (1-13). In diesem Artikel wird schrittweise ein Programm mit grafischer Oberfläche entwickelt, das derartige Umwandlungsprobleme ebenfalls löst. Dabei kommen eine Reihe grafischer Elemente aus dem AWT zum Einsatz, und es wird versucht, möglichst Java-gerecht und portabel zu arbeiten. Model, View, Controller Will man sehr objekt-orientiert vorgehen, verteilt man die Lösung auf mehrere Objekte. Model ist ein Interface, das die Idee einer Umwandlung als Funktion einer einzigen Variablen beschreibt. Linear ist eine Klasse von Umwandlungen, nämlich linearen Transformationen, die zum Beispiel für verschiedene Temperaturskalen oder auch Währungen zuständig ist, siehe Abbildung 2. 1 interface Model { 2 double f (double x); 3 } 4 5 public class Linear implements Model {

2 um/96/ Axel-Tobias Schreiner 2 6 protected double a, b; 7 public Linear (double a, double b) { 8 this.a = a; this.b = b; 9 } 10 public double f (double x) { 11 return a * x + b; 12 } 13 } Abbildung 2: Umwandlung abstrakt und konkret Ein Objekt wird mit den zwei Koeffizienten seiner Funktion initialisiert (2-8) und liefert dann über die Methode f die Funktionswerte ab (2-11). Java definiert ein Interface Obser ver, das Klassen implementieren müssen, wenn sie Änderungen in Objekten einer Klasse Obser vable beobachten wollen. 1 import java.util.*; 2 3 public class Output implements Observer { 4 protected Object value; 5 public Object value () { return value; } 6 public void update (Observable o, Object arg) { 7 value = arg; 8 } 9 } Abbildung 3: Ausgabe an einen Observer Abbildung 3 zeigt eine Klasse Output, die jeweils ein Objekt aufbewahren (3-4) und liefern kann (3-5). Als Obser ver erfährt Output mit update(), wenn sich sein Beobachtungsziel geändert hat; im vorliegenden Beispiel muß update() einen neuen Wert anliefern, der dann aufbewahrt wird (3-7). Ein Model soll von einem Controller betrieben werden, der über Änderungen eines Eingabe-Objekts informiert wird und dann einen neuen Funktionswert an alle Ausgabe-Objekte übermittelt, die das interessieren könnte, siehe Abbildung 4. 1 import java.util.*; 2 3 public class Controller extends Observable implements Observer { 4 protected Model model; 5 public Controller (Model model) { this.model = model; } 6 public void update (Observable o, Object arg) { 7 try { 8 double x = ((Double)arg).doubleValue(); 9 setchanged(); 10 notifyobservers(new Double(model.f(x))); 11 } catch(exception e) { } 12 } 13 } Abbildung 4: Änderungen bearbeitet ein Controller Java stellt als Grundstock dazu die Klasse Obser vable zur Verfügung. Controller soll beobachten und beobachtet werden, wird also von Obser vable und Obser ver abgeleitet (4-3). Bei der Konstruktion muß ein Model hinterlegt werden, das der Controller dann betreibt (4-5). update() empfängt hoffentlich (4-7) ein Double-Objekt, aus dem das Argument für die Umwandlung entnommen werden kann (4-8). setchanged() (4-9) informiert die Oberklasse Obser vable, daß wirklich eine Änderung stattfindet, deren Resultat dann mit notifyobser vers() ausgeliefert wird (4-10); ohne setchanged() würde die Auslieferung unterbleiben. Die objekt-orientierte Version der Temperaturumwandlung zeigt schließlich Abbildung 5, wobei der gleiche Rahmen wie in Abbildung 1 verwendet wird.

3 um/96/ Axel-Tobias Schreiner 3 8 Controller c2f = new Controller(new Linear(9./5., 32.)); 9 Output fahrenheit = new Output(); 10 c2f.addobserver(fahrenheit); 11 while ((line = in.readline())!= null) { 12 c2f.update(null, new Double(line)); 13 System.out.println("\t"+fahrenheit.value()); 14 } Abbildung 5: Umwandlung im OOP-Stil Zuerst muß die Objektwelt aus einem Controller mit einem Model zur Umwandlung von Celsius zu Fahrenheit aufgebaut werden (5-8). Die Ausgabe geht an das Output-Objekt fahrenheit (5-9), das dazu beim Controller als Obser ver angemeldet wird (5-10). Die Hauptschleife muß dann nur noch die Eingaben zu- und die Ausgaben darstellen: Eine Zeile wird als Double direkt an den Controller geschickt, als ob der Absender ein Obser vable gewesen wäre (5-12); null vertritt hier dessen Platz im Aufruf. Hat der Controller seine Pflicht getan, kann man das Resultat mit value() beim Output-Objekt abholen und als String ausgeben (5-13). Reuse Ein Problem durch eine Kombination von Model-, View- und Controller-Objekten zu lösen, ist eine bekannte Technik: Ein Model ist für die eigentliche Berechnung zuständig, losgelöst von allen Überlegungen zur Umgebung. View-Objekte dienen zur Interaktion mit dem Benutzer, und Controller lenken den Kontrollfluß von der Eingabe und Steuerung zur Ausgabe. Die objekt-orientierte Lösung ist zwar deutlich länger, aber mit den Klassen kann man auch ein Programm aufbauen, das Umwandlungen in beiden Richtungen vornimmt, siehe Abbildung 6: 11 Controller f2c = new Controller(new Linear(5./9., 160./9.)); 12 Output celsius = new Output(); f2c.addobserver(celsius); 13 while ((line = in.readline())!= null) 14 switch (line.charat(0)) { 15 case c : 16 c2f.update(null, new Double(line.substring(1))); 17 System.out.println("\t"+fahrenheit.value()+" f"); 18 break; 19 case f : 20 f2c.update(null, new Double(line.substring(1))); 21 System.out.println("\t"+celsius.value()+" c"); 22 } Abbildung 6: Umwandlung in beiden Richtungen Der bisherige Rahmen und die Objektwelt werden aus Abbildung 1 beziehungsweise 5 übernommen. Für die Umwandlung von Fahrenheit- in Celsius-Grade legt man einen weiteren Controller mit einem entsprechenden Model an (6-11) und verbindet ihn mit einem neuen Output-Objekt celsius (6-12). Je nach dem ersten Buchstaben der Eingabezeile (6-14) schickt die Hauptschleife den Rest der Zeile als Double an den zuständigen Controller (6-16,20) und berichtet den neuen Wert vom angeschlossenen Output (6-17,21). Die Objekt-Orientierung zahlt sich voll aus: Linear, Output und Controller wurden wiederverwendet, und für die zusätzliche Leistung des Programms muß eigentlich nur die Eingabemöglichkeit geschaffen und mit der vergrößerten Objektwelt verbunden werden. Erzeugt man weitere Linear-Objekte zur Umwandlung von DM in Dollar und umgekehrt, so hat man in Kürze die nötige Intelligenz für einen

4 um/96/ Axel-Tobias Schreiner 4 Wegbegleiter zu einem Trip ins Ausland beisammen. Retarget Ein zeitgemäßer Umwandler hat heute eine grafische Oberfläche. Die Aufbereitung der Lösung als Objektwelt geschah natürlich mit dem Hintergedanken, daß für eine grafische Oberfläche nur noch die Output-Objekte und die Art der Eingabe auszutauschen sind, denn sie bilden die einzige Schnittstelle zwischen Benutzer und Programm, wenn man davon absieht, daß die Hauptschleife die Ein- und Ausgaben der Objektwelt zustellen muß. Aus dem ersten Artikel dieser Serie ist schon bekannt, daß zu Java das Abstract Window Toolkit (AWT) gehört, eine Sammlung von Klassen, die die typische Funktionalität der grafischen Elemente von Window-Systemen so verkapseln, daß auf den einzelnen Plattformen noch das normale look and feel einigermaßen gewahrt bleiben sollte. Als ersten Lösungsversuch kann man ein TextField zur (zeilenlosen) Eingabe verwenden und eine Label als Obser ver ausbauen (Abbildung 7), um damit einen Controller zu bewachen und dessen Resultat auszugeben. 1 class TextOutput extends Label implements Observer { 2 public void update (Observable o, Object arg) { 3 settext(arg.tostring()); 4 } 5 } Abbildung 7: Label als Observer Die Umwandlung soll zunächst einmal per Maus-Click ausgelöst werden. Abbildung 8 zeigt einen ChangeButton, dem man bei der Konstruktion die Eingabe- TextComponent und den Obser ver mitteilt (8-4), damit er dann auf Knopfdruck die nötige update-nachricht verschicken kann (8-7). 1 class ChangeButton extends Button { 2 TextComponent source; Observer target; 3 ChangeButton (String label, TextComponent source, Observer target) { 4 super(label); this.source = source; this.target = target; 5 } 6 public boolean action(event evt, Object what) { 7 target.update(null, new Double(source.getText())); 8 return true; 9 } 10 } Abbildung 8: Button zum Auffordern Durch die Verwendung von Oberklassen hält man sich theoretisch offen, daß ähnliche Objekte auch mit diesem ChangeButton verbunden werden können. Events Viele Klassen im AWT definieren grafische Bedienungselemente, die Objekte einer etwas umständlichen Klasse Event empfangen können, die die typischen Ereignisse in Window-Systemen (Drücken oder Loslassen von Knöpfen und Tasten, Bewegungen usw.) repräsentieren. Eine Reihe von AWT-Klassen abstrahieren Event-Folgen, zum Beispiel reagiert Button optisch auf Maus-Clicks (Drücken plus Loslassen) und ersetzt sie durch Event-Objekte, die als ACTION_EVENT markiert sind.

5 um/96/ Axel-Tobias Schreiner 5 Leitet man eine Bedienelementklasse wie Button ab, kann man die Event-Objekte selbst untersuchen entweder durch Ersetzen der Methode handleevent(), bei der alle Events zuerst abgeliefert werden, oder mit Methoden wie action() (8-6), die anschließend nur entsprechend markierte Events erhalten. Events werden entlang der geometrischen Verschachtelung der AWT-Objekte zugestellt, und per Konvention rufen ersetzte Methoden wie handleevent() per super ihre Vorgänger in den Oberklassen der Objekte auf, wenn abgeleitete Klassen die Events nicht konsumieren wollen, denn nur so kann es nach handleevent() noch zum Aufruf von action() kommen. Liefert eine beteiligte Methode true (8-8), dann gilt der Event als konsumiert, sonst verschwindet er schließlich in handleevent() in der Basisklasse Component des äußersten grafischen Elements, also in einem Fenster oder Applet. Frame, Panel, LayoutManager Das Hauptprogramm des grafischen Umwandlers (Abbildung 9) baut jetzt nur noch die Objektwelt auf; die Zustellung der Eingaben als Events übernimmt das Java-AWT- Laufzeitsystem. 1 import java.awt.*; 2 import java.util.*; 3 4 public class d extends Panel { 5 public d () { 6 TextField celsius = new TextField(5); 7 Controller c2f = new Controller(new Linear(9./5., 32.)); 8 TextOutput fahrenheit = new TextOutput(); 9 c2f.addobserver(fahrenheit); 10 ChangeButton button = new ChangeButton(celsius, "c > f", c2f); 11 setlayout(new GridLayout(1,3)); 12 add(celsius); add(button); add(fahrenheit); 13 } 14 public static void main (String args []) { 15 Frame frame = new Frame(); 16 frame.add("center", new d()); 17 frame.pack(); frame.show(); 18 } 19 } Abbildung 9: Ein grafischer Umwandler Für die Oberfläche müssen ein TextField als Eingabe (9-6), ein TextOutput als Ausgabe (9-8) und ein ChangeButton als Auslöser (9-10) erzeugt werden, außerdem wird wieder ein Controller konstruiert und wie früher verbunden (9-7,9). Die grafischen Objekte müssen aber noch in einen Container eingepackt werden, der die geometrische Anordnung mit Hilfe eines LayoutManager-Objekts kontrolliert. Hier wird ein Panel verwendet, andere Möglichkeiten wären ein Frame oder ein Window. Abbildung 10: Motif-Oberfläche des ersten Umwandlers Die drei grafischen Objekte sollen gleich groß und als Zeile angeordnet sein (Abbildung 10), deshalb wird ein GridLayout mit einer Zeile und drei Spalten verwendet (9-11). add() ist eine Container-Methode, die bei diesem Layout die

6 um/96/ Axel-Tobias Schreiner 6 Objekte zeilenweise aufbaut (9-12). Ein Frame ist im X-Jargon ein Shell-Fenster, also ein Hauptfenster für eine Applikation (9-15), das auch eine MenuBar enthalten kann. Da dafür BorderLayout voreingestellt ist, kann das Umwandler-Panel mit einer weiteren add-methode im Zentrum des Frame angeordnet werden (9-16); andere Ziele für add() sind die vier Himmelsrichtungen. Alle Elemente machen bei BorderLayout die Größenänderungen des Fensters mit. Sind alle Objekte im Window oder Frame, läßt pack() wirklich das Layout berechnen und show() stellt das Resultat auf dem Schirm dar (9-17). Wie im letzten Artikel vorgeführt wurde, kann man sich mit dem Java-Debugger jdb davon überzeugen, daß jetzt mehrere Threads an der Ausführung des Umwandlers beteiligt sind, deshalb können das Hauptprogramm und damit der Thread main durchaus beendet werden. Die restlichen Threads kümmern sich um die Events und treiben dadurch die Umwandlungen auf dem Bildschirm voran. Das Programm kann tatsächlich nur gewaltsam beendet werden: Der als WINDOW_DESTROY markierte Event wird von Frame nicht bearbeitet; folglich kann das Fenster nicht geschlossen werden, und das Programm endet nur über ein Signal. Man ist also praktisch immer gezwungen, eine eigene Unterklasse von Frame zu konstruieren, in der WINDOW_DESTROY mit exit() verknüpft wird. Der Umwandler als Applet Eigentlich ist das Panel, in dem die grafischen Elemente des Umwandlers angeordnet sind, nicht notwendig. Frame stammt wie Panel von Container ab, und man hätte die Anordnung schon dort vornehmen können. Ein Panel kann allerdings im Gegensatz zu einem Frame auch in ein Applet eingefügt werden und damit als Teil einer Web-Seite auftauchen (Abbildung 11): 1 import java.applet.applet; 2 import java.awt.*; 3 4 public class LoaderApplet extends Applet { 5 public void init () { 6 try { 7 setlayout(new BorderLayout()); 8 add("center", (Component)Class. 9 forname(getparameter("class")). 10 newinstance()); 11 } catch(exception e) { 12 showstatus(e.tostring()); 13 } 14 } 15 } Abbildung 11: Ein Applet zum Laden von Component Dieses primitive LoaderApplet holt sich als Parameter einen Klassennamen (11-9) und erzeugt eine Instanz dieser Klasse (11-10), die von Component abstammen muß (11-8). Das neue Objekt bildet den Inhalt des Applets. 6 <applet code="loaderapplet.class" width=150 height=25> 7 <param name=class value=d> 8 </applet> Abbildung 12: Ein d -Panel wird als Applet geladen Abbildung 12 zeigt die entscheidenden Zeilen einer HTML-Datei, die das Umwandler- Panel auf einer Web-Seite auftauchen lassen: Mit einem applet-element wird ein

7 um/96/ Axel-Tobias Schreiner 7 LoaderApplet geladen (12-6), das dann aus param-elementen Werte zu Namen abholen kann (12-7, 11-9). Leider muß man den Platz für das Applet von außen her in Pixeln festlegen (12-6) eine Vermessung des ursprünglichen Panels auf dem heimatlichen Bildschirm ist im Web dabei nur bedingt hilfreich. Gegenverkehr Die Objekt-Orientierung des Designs hat zwar auch bei der grafischen Oberfläche für eine schnelle Lösung gesorgt Controller und Model wurden vollständig wiederverwendet aber die Auslösung der update-nachricht ist für den Benutzer durch den nötigen Wechsel von der Tastatur zur Maus reichlich unbequem, und ohne Beschriftung der Eingabefelder ist die Applikation in Kürze nutzlos. Abbildung 13: Verbesserte Windows-Oberfläche Abbildung 13 zeigt eine bessere Oberfläche, diesmal bei Windows 95 man erkennt deutlich, daß auf dieser Plattform die Beschriftung trotz entsprechender Programmierung (15-9) nicht zentriert ist. 3 public class e extends Panel { 4 protected DoubleIO fahrenheit, celsius; 5 public e () { 6 Controller c2f = new Controller(new Linear(9./5., 32.)); 7 fahrenheit = new DoubleIO(5); c2f.addobserver(fahrenheit); 8 Controller f2c = new Controller(new Linear(5./9., 160./9.)); 9 celsius = new DoubleIO(5); f2c.addobserver(celsius); 10 celsius.addobserver(c2f); fahrenheit.addobserver(f2c); 11 setlayout(new GridLayout(1,2)); 12 add(new Box("Celsius", celsius)); 13 add(new Box("Fahrenheit", fahrenheit)); 14 } 15 public static void main (String args []) { // frame.settitle("temperaturen"); Abbildung 14: Ein Panel für Gegenverkehr Abbildung 14 zeigt den Aufbau dieser Objektwelt in einem Panel. Erfreulicherweise liefert ein TextField auch einen ACTION_EVENT, wenn return eingegeben wird. Man kann also aus einem TextField ein DoubleIO entwickeln, das einerseits von einem Controller beobachtet werden kann (14-10), und das selbst auch einen Controller beobachtet (14-7,9). Zur Beschriftung werden celsius und fahrenheit noch in je eine Box verpackt (14-12,13), und zum Hauptprogramm kommt eine Zeile hinzu, die dem Frame einen Titel gibt (14-18). Natürlich darf das Eintreffen von update() bei DoubleIO nicht zu notifyobser vers() führen, sonst gerät die Applikation in eine Schleife, aber bei korrekter Implementierung kann man im einen Feld eingeben und im anderen Feld das Resultat der Umwandlung sehen.

8 um/96/ Axel-Tobias Schreiner 8 GridBagLayout Die Box besteht aus einem Rahmen um eine beliebige Component, die natürlich selbst ein Panel sein und dann weitere Elemente enthalten kann, sowie einer Beschriftung, die zum Beispiel mit einer Label realisiert werden kann. Abbildung 15 zeigt eine Lösung, die aus Platzgründen praktisch nicht parametrisiert ist. 1 import java.awt.*; 2 3 public class Box extends Panel { 4 protected Label title; 5 protected Component body; 6 protected boolean fixedsize; 7 private final int PAD = 8; 8 public Box (String title, Component body) { 9 this.title = new Label(title, Label.CENTER); GridBagLayout gb; 12 setlayout(gb = new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); 15 gbc.gridx = gbc.gridy = 0; 16 gbc.insets = new Insets(0, PAD, 0, PAD); 17 add(this.title); gb.setconstraints(this.title, gbc); gbc.gridx = 0; gbc.gridy = GridBagConstraints.RELATIVE; 20 gbc.gridwidth = gbc.gridheight = GridBagConstraints.REMAINDER; 21 gbc.fill = GridBagConstraints.HORIZONTAL; 22 gbc.insets = new Insets(PAD/2, PAD, PAD, PAD); 23 gbc.weightx = gbc.weighty = 1.; 24 add(this.body = body); gb.setconstraints(this.body, gbc); 25 } 26 public void paint (Graphics g) { 27 Dimension me = size(), tag = title.size(); 28 g.draw3drect(pad/2, tag.height/2, 29 me.width PAD, me.height (PAD+tag.height)/2, true); 30 } 31 public void validate () { 32 if (! fixedsize) { 33 Font f = title.getfont(); 34 title.setfont(new Font(f.getName(), f.getstyle(), 35 f.getsize() 2)); 36 fixedsize = true; 37 } 38 super.validate(); 39 } 40 } Abbildung 15: Eine Box mit Beschriftung Box entsteht aus Panel (15-3), denn damit hat man einen Container, auf den man zusätzlich zeichnen kann. Der wesentliche Trick besteht in der Verwendung des höchst komplizierten GridBagLayout (15-12), denn damit kann man unter anderem vorschreiben, daß um ein Element herum Platz freigehalten werden soll. Verwendet man GridBagLayout, muß man grafische Objekte sowohl dem Container als auch dem Layout-Manager mitteilen (15-17), wobei man die Randbedingungen als GridBagConstraints spezifiziert. Letzteres ist praktisch nur eine Struktur mit Voreinstellungen, die man abändern und wiederverwenden kann (15-24). Grundsätzlich ordnet man Elemente in einer Tabelle an (15-15,19), wobei ein Element auch mehrere Zellen der Tabelle erhalten kann (15-20). RELATIVE bedeutet, daß man anschließt, REMAINDER, daß der restliche Platz in der jeweiligen Richtung

9 um/96/ Axel-Tobias Schreiner 9 zugeteilt wird. Ein Element kann in seinen Zellen aufgeblasen werden (15-21), außerdem könnte man zur normalen Größe des Elements noch Zwischenraum hinzufügen lassen. Insets definieren einen Rahmen um ein Element herum (15-16,22); hier werden zumeist PAD Pixel für den Rahmen freigehalten. Entscheidend (und fehleranfällig) ist, was passiert, wenn sich der verfügbare Platz ändert. Das maximale weightx einer Spalte entscheidet, welchen Anteil am horizontalen Platz sie im Verhältnis zu den anderen Spalten bekommt. Vertikal funktioniert es mit weighty und Zeilen entsprechend. Die neueste Dokumentation von SUN (1.0.2) erklärt es genau umgekehrt, und auch sie schweigt sich darüber aus, was mit Gewichten von Elementen passiert, die mehrere Zellen belegen. Da die Voreinstellung Null ist und dann nichts hinzugefügt wird, erhält im vorliegenden Fall der Inhalt der Box den gesamten zusätzlich verfügbaren Platz (15-23). Trotz einer Reihe von Versuchen habe ich übrigens keinen Weg gefunden, die Minimalgröße eines Fensters zu begrenzen greift man zu hart mit dem Window-Manager zu, bleibt eben nichts übrig. Zeichnungen Damit der gewünschte Rahmen in der Box auftaucht, muß man die Methode paint() ersetzen, mit der sich jede Component selbst darstellt (15-26). Mit size() kann man die aktuelle Größe der Box und der Label bestimmen, die den Titel enthält (15-27). Anschließend genügt es, ein geeignetes Rechteck mit dem grafischen Kontext zu zeichnen (15-28). Die Label wird nämlich erst nach dem Aufruf der paint-methode der Box gezeichnet; sie ist gefüllt und verdeckt folglich auf dem Bildschirm einen Teil des Rechtecks. Es sieht eleganter aus, wenn der Titel etwas kleinere Zeichen verwendet. Dazu muß man die Schrift der Label beeinflussen. Sie gehört zum Grafik-Kontext und ist deshalb bei der Konstruktion noch nicht definiert. Mit einem kleinen Trick kann man die Änderung im richtigen Moment vornehmen: Man ersetzt validate(), die Methode, mit der ein grafisches Element validiert wird, bevor es dargestellt wird. Genau beim ersten Aufruf (15-32,36) holt die Box die Schriftart ihrer Label (15-33) und ersetzt sie durch einen neuen Font, der geringfügig kleiner ist (15-34). Danach muß natürlich die Validierung fortgesetzt werden (15-38). Mehr fachvererbung DoubleIO soll ein TextField sein, aber auch von einem Controller beobachtet werden können, also von Obser vable abstammen. Im Gegensatz zu Obser ver ist Obser vable eine Klasse die Objekte enthalten Zustand in Form einer Liste ihrer Beobachter, und damit ergibt sich ein Problem, denn Java kennt nur einfache Vererbung. Abbildung 16 zeigt die Lösung: DoubleIO stammt von TextField ab und enthält ein Obser vable als Hilfsobjekt, an das ein Aufruf von addobser ver() einfach weitergeleitet wird (16-11). 1 import java.awt.*; 2 import java.util.*; 3 4 public class DoubleIO extends TextField implements Observer { 5 protected myobservable clients; 6 public DoubleIO (int cols) { 7 super(cols); 8 clients = new myobservable(); 9 } 10 public void addobserver (Observer o) {

10 um/96/ Axel-Tobias Schreiner clients.addobserver(o); 12 } 13 public void update (Observable o, Object arg) { 14 settext(arg.tostring()); 15 } 16 public boolean action(event evt, Object what) { 17 clients.setchanged(); 18 try { 19 clients.notifyobservers(new Double(getText())); 20 } catch(exception e) { 21 settext("0"); 22 clients.notifyobservers(new Double(0.)); 23 } 24 selectall(); 25 return true; 26 } 27 public boolean lostfocus(event evt, Object what) { 28 action(evt, what); select(0, 0); 29 return true; 30 } 31 public boolean gotfocus(event evt, Object what) { 32 selectall(); 33 return true; 34 } 35 } class myobservable extends Observable { 38 protected void setchanged () { super.setchanged(); } 39 } Abbildung 16: Ein TextField mit Beobachtern Später muß DoubleIO noch die Methode setchanged() aufrufen (16-17); sie ist zwar theoretisch protected, aber wenn man im gleichen Paket wie DoubleIO eine eigene Unterklasse von Obser vable konstruiert (16-37), kann man die Methode auch von einer fremden Klasse aus aufrufen. DoubleIO soll ein Obser ver sein; die nötige Methode update() kann man von TextOutput in Abbildung 7 kopieren hier würde Mehrfachvererbung sicher nicht zum Ziel führen, denn man muß sich schon entscheiden, ob DoubleIO eine passive Label oder ein veränderliches TextField sein soll. DoubleIO muß vor allem bei Eingabe von return seine Beobachter informieren. Eigentlich sollte man action() vom ChangeButton in Abbildung 8 übernehmen können, aber die Beobachter müssen mit Hilfe des Obser vable erreicht werden (16-17,19). Die Fehlerbehandlung bereinigt Eingaben, die nicht in einen Double- Wert umgewandelt werden können (16-21). Chaos Der Umwandler ist bequemer zu benutzen, wenn man im Anschluß an return sofort die nächste Anfrage tippen kann, ohne die alte Eingabe explizit löschen zu müssen. Dies wird dadurch erreicht, daß man im Zuge der Umwandlung den Eingabetext vollständig selektiert (16-24); eine neue Eingabe ersetzt dann stillschweigend die Selektion. Leider ist man nicht verpflichtet, seine Eingabe mit return abzuschließen. Verläßt man ein DoubleIO-Feld, indem man mit der Maus ein anderes Fenster zum Fokus der Eingabe macht, oder wechselt man mit tab in das benachbarte Feld, erfolgt kein Aufruf von action() und damit keine Nachricht an die Beobachter: Die beiden Felder enthalten dann Werte, die nicht zueinandergehören.

11 um/96/ Axel-Tobias Schreiner 11 Die sichtbaren AWT-Objekte entstammen letztlich alle einer Klasse Component, die verspricht, einen LOST_FOCUS_EVENT zu erzeugen, wenn einem Objekt die Eingaben nicht mehr zugestellt werden, sowie einen GOT_FOCUS_EVENT, bevor die Eingaben fließen. Aus dem ersten Event sollte man also auch eine action() entwickeln, um sicherzustellen, daß Celsius- und Fahrenheit-Grade immer zusammenpassen (16-28). Beim zweiten Event kann man versuchsweise selectall() einbauen (16-32), damit man gleich wieder lostippen kann. Auf der Entwicklungsplattform (Java-Compiler auf NeXT, Java-Ausführung auf Linux, Motif-Ausgabe wieder zurück auf NeXT, was man eben so an Hardware hat) klappt das auch wie geplant; dort schaltet auch tab zwischen den beiden Textfeldern hin und her. Auf einer Originalplattform (Windows 95 und Windows NT) funktioniert es leider nicht tab provoziert etwas ärgerliche Geräusche, und Maus-Clicks in anderen Feldern oder Fenstern lassen die Controller ungerührt. Offensichtlich ist es mit der Portabilität des AWT an diesem recht kritischen Punkt noch nicht optimal bestellt. Bezüglich tab kann man gerade noch für Portabilität sorgen: Abbildung 17 zeigt die Methode keydown(), die man dazu dem Panel in Abbildung 14 hinzufügt. 21 public boolean keydown (Event evt, int key) { 22 if (key!= \t ) return false; 23 DoubleIO next = evt.target == celsius? fahrenheit : celsius; 24 next.requestfocus(); 25 return true; 26 } Abbildung 17: tab als Umschalter Da das TextField einen Event mit einem tab-zeichen nicht konsumiert, kann man ihn später in der Hierarchie dazu verwenden, mit requestfocus() umzuschalten (17-24). Daran anschließend erhalten die beteiligten DoubleIO-Objekte ihre FOCUS-Events wirklich, und die Umschaltung erfolgt so, wie man das möchte. Legt man den Focus mit der Maus fest, kann man in dem Panel nicht entsprechend nachhelfen. Zwar verspricht die neueste Dokumentation (1.0.2), daß in Version 1.1 das AWT alle derartigen Events dem TextField liefern wird, aber wenigstens bis dahin muß das TextField die Maus-Clicks zum Positionieren des Cursors akzeptieren. Das hat zur Folge, daß selbst auf der Motif-Plattform, wo die FOCUS-Events korrekt zugestellt werden, das selectall() (16-32) bei Maus-Clicks wirkungslos bleibt: Die Maus fokussiert die Eingabe und positioniert zugleich den Cursor, macht also die Selektion wieder rückgängig. Fazit Eigentlich wollte ich in diesem Artikel ja alles vorführen, was das AWT so bietet: Texte, Knöpfe, Listen, Dialoge und schließlich Canvas zum Aufbau eigener grafischer Elemente. Ich ließ es dann aber doch bei diesem trivialen Beispiel und dafür bei einer sehr gründlichen Betrachtung, denn sie illustriert meines Erachtens das AWT wesentlich besser: Die grafischen Elemente sind ziemlich primitiv, überschaubar und einigermaßen portabel. Mit den einfachen Layouts (Border und Grid) kommt man schnell zu einer relativ akzeptablen Oberfläche. GridBag ist mächtig, kompliziert, fehlerhaft und bisher sehr schlecht dokumentiert. Da die Events letztlich bis zum Fenster weitergereicht werden und ihr target enthalten, bietet sich an, auch nur dort den Kontrollfluß einer Applikation zu verwalten.

12 um/96/ Axel-Tobias Schreiner 12 Macht man sich die Mühe, Obser vable mit den AWT-Objekten zu verbinden, erhält man wesentlich wiederverwendbarere Lösungen. Das ist alles höchst positiv und für ein plattformübergreifendes System, das auch im Web einsetzbar ist, einigermaßen ohne Konkurrenz wenn man einmal von Visual Basic und OPENSTEP absieht. Weniger schön ist, daß man schon bei diesem trivialen Beispiel auf Probleme trifft, für die ich keine Lösung gefunden habe: Wie reagiert man zuverlässig auf die Fokussierung? Wann kann man eine vorhandene Schrift zuverlässig ändern? Wie begrenzt man die Größe eines Fensters? Wie konstruiert man eine für Windows und Motif typische Multi-Window- Architektur, bei der die Dokumente in einem Applikationsfenster eingesperrt bleiben? Das Beispiel ist zwar mit Blick auf eine Situation entwickelt worden, bei der viele Umwandler parallel betrieben und auch modifiziert werden, aber das ist erst praktikabel, wenn man auch diese Fragen beantworten kann. Die Quellen Auf die Idee, eine Umwandlung als Fallstudie zu verwenden, brachte mich das neue, ausgezeichnete Handbuch Discovering OPENSTEP von NeXT. Das Konzept Model, View, Controller wird immer der SmallTalk-Literatur zugeschrieben. Wie man sieht, funktioniert es auch bei Java (und genügend stilisierten Beispielen) hervorragend. Es kann seine Verwandtschaft zu NeXT s target-action-methodik nicht verleugnen. Mit Obser ver und Obser vable umgeht man zwar das Problem der fehlenden Selektoren in Java einigermaßen, aber ich finde die Lösung von NeXT nicht nur wegen der grafischen Programmierung im InterfaceBuilder eleganter. Java hat eine weitverzweigte Klassenhierarchie zur Repräsentierung von Fehlern als Exception oder Error. Ich finde es merkwürdig, daß die höchst wichtige Klasse Event im AWT dagegen im besten C-union-Stil definiert wurde: Je nach Markierung sind nur bestimmte Felder in einem Event-Objekt mit sinnvoller Information belegt. Eine Hierarchie hätte hier sicher für Klarheit gesorgt. Flanagan s Java in a Nutshell (O Reilly 1996, ISBN ) enthält eine hervorragende Tabelle (fast) aller Möglichkeiten, die man leider in der Java-Dokumentation nicht direkt findet und die man sehr häufig konsultieren muß. Speziell die Dokumentation der AWT-Klassen ist außerordentlich lückenhaft. Die Version der Dokumentation ist nicht mehr mit javadoc erstellt und enthält weniger gute Querverweise. Sie ist zwar ausführlicher, aber in kritischen Fragen ist man noch immer auf Experimente angewiesen, die, wie vorgeführt, dann auch noch plattformabhängig verlaufen können. Meine Java-Vorlesungsunterlagen, die wie die Quellen zu diesem Artikel über osnabrueck.de/um gefunden werden können, enthalten Applets und Applikationen, mit denen das Event-Verhalten jedes einzelnen grafischen Elements im AWT getestet werden kann.

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Anmeldung http://www.ihredomain.de/wp-admin Dashboard Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Das Dashboard gibt Ihnen eine kurze Übersicht, z.b. Anzahl der Beiträge,

Mehr

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Seite erstellen Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Es öffnet sich die Eingabe Seite um eine neue Seite zu erstellen. Seiten Titel festlegen Den neuen

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Graphische Benutzungsoberflächen

Graphische Benutzungsoberflächen Graphische Benutzungsoberflächen Graphische Benutzungsoberflächen (graphical user interfaces, GUI) dienen zur interaktiven Bedienung von Programmen, Ein- und Ausgabe mit graphischen Techniken und visuellen

Mehr

Handbuch B4000+ Preset Manager

Handbuch B4000+ Preset Manager Handbuch B4000+ Preset Manager B4000+ authentic organ modeller Version 0.6 FERROFISH advanced audio applications Einleitung Mit der Software B4000+ Preset Manager können Sie Ihre in der B4000+ erstellten

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Tutorial: Entlohnungsberechnung erstellen mit LibreOffice Calc 3.5

Tutorial: Entlohnungsberechnung erstellen mit LibreOffice Calc 3.5 Tutorial: Entlohnungsberechnung erstellen mit LibreOffice Calc 3.5 In diesem Tutorial will ich Ihnen zeigen, wie man mit LibreOffice Calc 3.5 eine einfache Entlohnungsberechnung erstellt, wobei eine automatische

Mehr

2A Basistechniken: Weitere Aufgaben

2A Basistechniken: Weitere Aufgaben 2A Basistechniken: Weitere Aufgaben 2A.3 Programmierung unter UNIX/Linux 1. Gegeben sind einige Ausschnitte von C-Programmen, die unter UNIX/Linux ausgeführt werden sollen. Beantworten Sie die zugehörigen

Mehr

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank In den ersten beiden Abschnitten (rbanken1.pdf und rbanken2.pdf) haben wir uns mit am Ende mysql beschäftigt und kennengelernt, wie man

Mehr

Zwischenablage (Bilder, Texte,...)

Zwischenablage (Bilder, Texte,...) Zwischenablage was ist das? Informationen über. die Bedeutung der Windows-Zwischenablage Kopieren und Einfügen mit der Zwischenablage Vermeiden von Fehlern beim Arbeiten mit der Zwischenablage Bei diesen

Mehr

Urlaubsregel in David

Urlaubsregel in David Urlaubsregel in David Inhaltsverzeichnis KlickDown Beitrag von Tobit...3 Präambel...3 Benachrichtigung externer Absender...3 Erstellen oder Anpassen des Anworttextes...3 Erstellen oder Anpassen der Auto-Reply-Regel...5

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung Anleitung zur Daten zur Datensicherung und Datenrücksicherung Datensicherung Es gibt drei Möglichkeiten der Datensicherung. Zwei davon sind in Ges eingebaut, die dritte ist eine manuelle Möglichkeit. In

Mehr

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen Suche schlecht beschriftete Bilder mit Eigenen Abfragen Ist die Bilderdatenbank über einen längeren Zeitraum in Benutzung, so steigt die Wahrscheinlichkeit für schlecht beschriftete Bilder 1. Insbesondere

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

Primzahlen und RSA-Verschlüsselung

Primzahlen und RSA-Verschlüsselung Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also

Mehr

Erstellen von x-y-diagrammen in OpenOffice.calc

Erstellen von x-y-diagrammen in OpenOffice.calc Erstellen von x-y-diagrammen in OpenOffice.calc In dieser kleinen Anleitung geht es nur darum, aus einer bestehenden Tabelle ein x-y-diagramm zu erzeugen. D.h. es müssen in der Tabelle mindestens zwei

Mehr

Kleines Handbuch zur Fotogalerie der Pixel AG

Kleines Handbuch zur Fotogalerie der Pixel AG 1 1. Anmelden an der Galerie Um mit der Galerie arbeiten zu können muss man sich zuerst anmelden. Aufrufen der Galerie entweder über die Homepage (www.pixel-ag-bottwartal.de) oder über den direkten Link

Mehr

Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können.

Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können. Excel-Schnittstelle Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können. Voraussetzung: Microsoft Office Excel ab Version 2000 Zum verwendeten Beispiel:

Mehr

Excel Pivot-Tabellen 2010 effektiv

Excel Pivot-Tabellen 2010 effektiv 7.2 Berechnete Felder Falls in der Datenquelle die Zahlen nicht in der Form vorliegen wie Sie diese benötigen, können Sie die gewünschten Ergebnisse mit Formeln berechnen. Dazu erzeugen Sie ein berechnetes

Mehr

PowerPoint: Text. Text

PowerPoint: Text. Text PowerPoint: Anders als in einem verarbeitungsprogramm steht in PowerPoint der Cursor nicht automatisch links oben auf einem Blatt in der ersten Zeile und wartet auf eingabe. kann hier vielmehr frei über

Mehr

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter 2 Inhaltsverzeichnis 1 Web-Kürzel 4 1.1 Einführung.......................................... 4 1.2 Web-Kürzel.........................................

Mehr

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar 2015. ZID Dezentrale Systeme

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar 2015. ZID Dezentrale Systeme Novell Client Anleitung zur Verfügung gestellt durch: ZID Dezentrale Systeme Februar 2015 Seite 2 von 8 Mit der Einführung von Windows 7 hat sich die Novell-Anmeldung sehr stark verändert. Der Novell Client

Mehr

Hinweise zum Übungsblatt Formatierung von Text:

Hinweise zum Übungsblatt Formatierung von Text: Hinweise zum Übungsblatt Formatierung von Text: Zu den Aufgaben 1 und 2: Als erstes markieren wir den Text den wir verändern wollen. Dazu benutzen wir die linke Maustaste. Wir positionieren den Mauszeiger

Mehr

Übung 1. Explorer. Paint. Paint. Explorer

Übung 1. Explorer. Paint. Paint. Explorer Seite 1 Übung 1 1. Öffnen Sie das Programm PAINT 2. Maximieren Sie das Fenster 3. Verkleinern Sie das Fenster (Nicht Minimieren!!) 4. Öffnen Sie ZUSÄTZLICH zu PAINT den Windows Explorer 5. Verkleinern

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation (Bei Abweichungen, die bspw. durch technischen Fortschritt entstehen können, ziehen Sie bitte immer das aktuelle Handbuch

Mehr

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten In dem Virtuellen Seminarordner werden für die Teilnehmerinnen und Teilnehmer des Seminars alle für das Seminar wichtigen Informationen,

Mehr

sm@rt-tan plus Flickerfeld bewegt sich nicht

sm@rt-tan plus Flickerfeld bewegt sich nicht Technischer Hintergrund Um die Verwendung des Verfahrens Sm@rt-TAN plus des neuen sicheren TAN- Verfahrens so komfortabel wie möglich zu gestalten, wurde eine Möglichkeit geschaffen, die Angaben einer

Mehr

Anleitung für Berichte in Word Press, auf der neuen Homepage des DAV Koblenz

Anleitung für Berichte in Word Press, auf der neuen Homepage des DAV Koblenz Anleitung für Berichte in Word Press, auf der neuen Homepage des DAV Koblenz Diese Anleitung soll als Kurzreferenz und Schnellanleitung dienen um einfach und schnell Berichte auf der Homepage www.dav-koblenz.de

Mehr

Outlook Erstellen einer E-Mail aus einer HTML - Vorlage INHALT

Outlook Erstellen einer E-Mail aus einer HTML - Vorlage INHALT Outlook Erstellen einer E-Mail aus einer HTML - Vorlage INHALT LADEN DER VORLAGE 2 Öffnen Sie Outlook 2 Klicken Sie auf EXTRAS >> OPTIONEN 2 Im Optionenfeld von Outlook folgend Sie den Schritten 2 Fenster

Mehr

Was ich als Bürgermeister für Lübbecke tun möchte

Was ich als Bürgermeister für Lübbecke tun möchte Wahlprogramm in leichter Sprache Was ich als Bürgermeister für Lübbecke tun möchte Hallo, ich bin Dirk Raddy! Ich bin 47 Jahre alt. Ich wohne in Hüllhorst. Ich mache gerne Sport. Ich fahre gerne Ski. Ich

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Beschreibung E-Mail Regeln z.b. Abwesenheitsmeldung und Weiterleitung

Beschreibung E-Mail Regeln z.b. Abwesenheitsmeldung und Weiterleitung Outlook Weiterleitungen & Abwesenheitsmeldungen Seite 1 von 6 Beschreibung E-Mail Regeln z.b. Abwesenheitsmeldung und Weiterleitung Erstellt: Quelle: 3.12.09/MM \\rsiag-s3aad\install\vnc\email Weiterleitung

Mehr

Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG

Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG Um mit IOS2000/DIALOG arbeiten zu können, benötigen Sie einen Webbrowser. Zurzeit unterstützen wir ausschließlich

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Was meinen die Leute eigentlich mit: Grexit?

Was meinen die Leute eigentlich mit: Grexit? Was meinen die Leute eigentlich mit: Grexit? Grexit sind eigentlich 2 Wörter. 1. Griechenland 2. Exit Exit ist ein englisches Wort. Es bedeutet: Ausgang. Aber was haben diese 2 Sachen mit-einander zu tun?

Mehr

Textgestaltung mit dem Editor TinyMCE Schritt für Schritt

Textgestaltung mit dem Editor TinyMCE Schritt für Schritt Textgestaltung mit dem Editor TinyMCE Schritt für Schritt Folgender Artikel soll veröffentlicht und mit dem Editor TinyMCE gestaltet werden: Eine große Überschrift Ein Foto Hier kommt viel Text. Hier kommt

Mehr

AUF LETZTER SEITE DIESER ANLEITUNG!!!

AUF LETZTER SEITE DIESER ANLEITUNG!!! BELEG DATENABGLEICH: Der Beleg-Datenabgleich wird innerhalb des geöffneten Steuerfalls über ELSTER-Belegdaten abgleichen gestartet. Es werden Ihnen alle verfügbaren Belege zum Steuerfall im ersten Bildschirm

Mehr

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI) 1 JAVA für Bauingenieure Alexander Karakas SS 2008 Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI) 21.05.2008 2 Was ist ein(e) GUI? GUI = Graphical User Interface = Graphische

Mehr

Anleitung zum Login. über die Mediteam- Homepage und zur Pflege von Praxisnachrichten

Anleitung zum Login. über die Mediteam- Homepage und zur Pflege von Praxisnachrichten Anleitung zum Login über die Mediteam- Homepage und zur Pflege von Praxisnachrichten Stand: 18.Dezember 2013 1. Was ist der Mediteam-Login? Alle Mediteam-Mitglieder können kostenfrei einen Login beantragen.

Mehr

tentoinfinity Apps 1.0 EINFÜHRUNG

tentoinfinity Apps 1.0 EINFÜHRUNG tentoinfinity Apps Una Hilfe Inhalt Copyright 2013-2015 von tentoinfinity Apps. Alle Rechte vorbehalten. Inhalt der online-hilfe wurde zuletzt aktualisiert am August 6, 2015. Zusätzlicher Support Ressourcen

Mehr

Erstellen einer digitalen Signatur für Adobe-Formulare

Erstellen einer digitalen Signatur für Adobe-Formulare Erstellen einer digitalen Signatur für Adobe-Formulare (Hubert Straub 24.07.13) Die beiden Probleme beim Versenden digitaler Dokumente sind einmal die Prüfung der Authentizität des Absenders (was meist

Mehr

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung M. Graefenhan 2000-12-07 Aufgabe Lösungsweg Übungen zu C Blatt 3 Musterlösung Schreiben Sie ein Programm, das die Häufigkeit von Zeichen in einem eingelesenen String feststellt. Benutzen Sie dazu ein zweidimensionales

Mehr

Folge 18 - Vererbung

Folge 18 - Vererbung Workshop Folge 18 - Vererbung 18.1 Ein einfacher Fall der Vererbung Schritt 1 - Vorbereitungen Besorgen Sie sich - vielleicht aus einer der Übungen der Folge 17 - ein fertiges und lauffähiges Listenprojekt,

Mehr

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen.

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen. Teil B: Erweiterungen Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen. Die folgenden Aufgaben und Ausführungen geben einige Hilfestellungen, welche (mindestens

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

Mehr

Datensicherung. Beschreibung der Datensicherung

Datensicherung. Beschreibung der Datensicherung Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten

Mehr

Pages, Keynote. und Numbers

Pages, Keynote. und Numbers Pages, Keynote und Numbers Pages, Keynote und Numbers Die iwork-apps im Büro und unterwegs nutzen Mac und mehr. Numbers Tipps und Tricks zur Arbeit mit Tabellen Kapitel 18 Kapitel 18 Tabellen als Ganzes

Mehr

Microsoft Access 2013 Navigationsformular (Musterlösung)

Microsoft Access 2013 Navigationsformular (Musterlösung) Hochschulrechenzentrum Justus-Liebig-Universität Gießen Microsoft Access 2013 Navigationsformular (Musterlösung) Musterlösung zum Navigationsformular (Access 2013) Seite 1 von 5 Inhaltsverzeichnis Vorbemerkung...

Mehr

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12 Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben

Mehr

Fotostammtisch-Schaumburg

Fotostammtisch-Schaumburg Der Anfang zur Benutzung der Web Seite! Alles ums Anmelden und Registrieren 1. Startseite 2. Registrieren 2.1 Registrieren als Mitglied unser Stammtischseite Wie im Bild markiert jetzt auf das Rote Register

Mehr

Erzherzog Johann Jahr 2009

Erzherzog Johann Jahr 2009 Erzherzog Johann Jahr 2009 Der Erzherzog Johann Tag an der FH JOANNEUM in Kapfenberg Was wird zur Erstellung einer Webseite benötigt? Um eine Webseite zu erstellen, sind die folgenden Dinge nötig: 1. Ein

Mehr

Computeria Rorschach Mit Excel Diagramme erstellen

Computeria Rorschach Mit Excel Diagramme erstellen Mit Excel Diagramme erstellen 25.12.2010 Roland Liebing Mit Excel Diagramme erstellen Diagramme können Zahlenwerte veranschaulichen, das heisst, mit Hilfe eines Diagramms können Zahlen besser miteinander

Mehr

Anleitung für die Registrierung und das Einstellen von Angeboten

Anleitung für die Registrierung und das Einstellen von Angeboten Anleitung für die Registrierung und das Einstellen von Angeboten Das FRROOTS Logo zeigt Ihnen in den Abbildungen die wichtigsten Tipps und Klicks. 1. Aufrufen der Seite Rufen Sie zunächst in Ihrem Browser

Mehr

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos in Verbindung mit der Webshopanbindung wurde speziell auf die Shop-Software shop to date von DATA BECKER abgestimmt. Mit

Mehr

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Wenn der Name nicht gerade www.buch.de oder www.bmw.de heißt, sind Internetadressen oft schwer zu merken Deshalb ist es sinnvoll, die Adressen

Mehr

Arbeiten mit UMLed und Delphi

Arbeiten mit UMLed und Delphi Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf

Mehr

Punkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software

Punkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software Wie erzeugt man ein Fotobuch im Internet bei Schlecker Seite Punkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software Punkt 12 bis 24: -Wir arbeiten mit der Software 8-16 -Erstellung

Mehr

DAVID: und David vom Deutschlandlabor. Wir beantworten Fragen zu Deutschland und den Deutschen.

DAVID: und David vom Deutschlandlabor. Wir beantworten Fragen zu Deutschland und den Deutschen. Das Deutschlandlabor Folge 09: Auto Manuskript Die Deutschen sind bekannt dafür, dass sie ihre Autos lieben. Doch wie sehr lieben sie ihre Autos wirklich, und hat wirklich jeder in Deutschland ein eigenes

Mehr

Registrierung am Elterninformationssysytem: ClaXss Infoline

Registrierung am Elterninformationssysytem: ClaXss Infoline elektronisches ElternInformationsSystem (EIS) Klicken Sie auf das Logo oder geben Sie in Ihrem Browser folgende Adresse ein: https://kommunalersprien.schule-eltern.info/infoline/claxss Diese Anleitung

Mehr

S TAND N OVEMBE R 2012 HANDBUCH DUDLE.ELK-WUE.DE T E R M I N A B S P R A C H E N I N D E R L A N D E S K I R C H E

S TAND N OVEMBE R 2012 HANDBUCH DUDLE.ELK-WUE.DE T E R M I N A B S P R A C H E N I N D E R L A N D E S K I R C H E S TAND N OVEMBE R 2012 HANDBUCH T E R M I N A B S P R A C H E N I N D E R L A N D E S K I R C H E Herausgeber Referat Informationstechnologie in der Landeskirche und im Oberkirchenrat Evangelischer Oberkirchenrat

Mehr

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Diese Verbindung muss einmalig eingerichtet werden und wird benötigt, um den Zugriff vom privaten Rechner oder der Workstation im Home Office über

Mehr

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können. Tutorial: Wie erfasse ich einen Termin? In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können. Neben den allgemeinen Angaben zu einem

Mehr

Kapitel 3 Frames Seite 1

Kapitel 3 Frames Seite 1 Kapitel 3 Frames Seite 1 3 Frames 3.1 Allgemeines Mit Frames teilt man eine HTML-Seite in mehrere Bereiche ein. Eine Seite, die mit Frames aufgeteilt ist, besteht aus mehreren Einzelseiten, die sich den

Mehr

Viele Bilder auf der FA-Homepage

Viele Bilder auf der FA-Homepage Viele Bilder auf der FA-Homepage Standardmäßig lassen sich auf einer FA-Homepage nur 2 Bilder mit zugehörigem Text unterbringen. Sollen es mehr Bilder sein, muss man diese als von einer im Internet

Mehr

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: 24.09.2014)

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: 24.09.2014) Handbuch NAFI Online-Spezial 1. Auflage (Stand: 24.09.2014) Copyright 2016 by NAFI GmbH Unerlaubte Vervielfältigungen sind untersagt! Inhaltsangabe Einleitung... 3 Kundenauswahl... 3 Kunde hinzufügen...

Mehr

Das RSA-Verschlüsselungsverfahren 1 Christian Vollmer

Das RSA-Verschlüsselungsverfahren 1 Christian Vollmer Das RSA-Verschlüsselungsverfahren 1 Christian Vollmer Allgemein: Das RSA-Verschlüsselungsverfahren ist ein häufig benutztes Verschlüsselungsverfahren, weil es sehr sicher ist. Es gehört zu der Klasse der

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Serienbrief aus Outlook heraus Schritt 1 Zuerst sollten Sie die Kontakte einblenden, damit Ihnen der Seriendruck zur Verfügung steht. Schritt 2 Danach wählen Sie bitte Gerhard Grünholz 1 Schritt 3 Es öffnet

Mehr

Mediator 9 - Lernprogramm

Mediator 9 - Lernprogramm Mediator 9 - Lernprogramm Ein Lernprogramm mit Mediator erstellen Mediator 9 bietet viele Möglichkeiten, CBT-Module (Computer Based Training = Computerunterstütztes Lernen) zu erstellen, z. B. Drag & Drop

Mehr

Applets. Applets. Applets. Applet: Java-Programm Eingebettet in einer HTML-Seite Ausführung von einem Java-fähigen Web-Browser oder sog.

Applets. Applets. Applets. Applet: Java-Programm Eingebettet in einer HTML-Seite Ausführung von einem Java-fähigen Web-Browser oder sog. Johann Wolfgang Goethe-Universität Professur für Graphische Datenverarbeitung Fachbereich Informatik und Mathematik Prof. Dr. Detlef Krömker Applet: Java-Programm Eingebettet in einer HTML-Seite Ausführung

Mehr

TeamSpeak3 Einrichten

TeamSpeak3 Einrichten TeamSpeak3 Einrichten Version 1.0.3 24. April 2012 StreamPlus UG Es ist untersagt dieses Dokument ohne eine schriftliche Genehmigung der StreamPlus UG vollständig oder auszugsweise zu reproduzieren, vervielfältigen

Mehr

Wir basteln einen Jahreskalender mit MS Excel.

Wir basteln einen Jahreskalender mit MS Excel. Wir basteln einen Jahreskalender mit MS Excel. In meinen Seminaren werde ich hin und wieder nach einem Excel-Jahreskalender gefragt. Im Internet findet man natürlich eine ganze Reihe mehr oder weniger

Mehr

Anlegen eines DLRG Accounts

Anlegen eines DLRG Accounts Anlegen eines DLRG Accounts Seite 1 von 6 Auf der Startseite des Internet Service Centers (https:\\dlrg.de) führt der Link DLRG-Account anlegen zu einer Eingabemaske, mit der sich jedes DLRG-Mitglied genau

Mehr

Java Projekt: Tic Tac Toe + GUI

Java Projekt: Tic Tac Toe + GUI Java Projekt: Tic Tac Toe + GUI Rechnerpraktikum aus Programmierung im WS 2005/06 unter der Leitung von Dr. Michael Hahsler Tadeh Amirian (h0253821) 10.01.2006 1) Problemdefinition Beim TicTacToe Spiel

Mehr

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu]) 3.7 Erstellen einer Collage Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu]) Dann Größe des Dokuments festlegen beispielsweise A4 (weitere

Mehr

Speichern. Speichern unter

Speichern. Speichern unter Speichern Speichern unter Speichern Auf einem PC wird ständig gespeichert. Von der Festplatte in den Arbeitspeicher und zurück Beim Download Beim Kopieren Beim Aufruf eines Programms Beim Löschen Beim

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

Anleitung RÄUME BUCHEN MIT OUTLOOK FÜR VERWALTUNGSANGESTELLTE

Anleitung RÄUME BUCHEN MIT OUTLOOK FÜR VERWALTUNGSANGESTELLTE Anleitung RÄUME BUCHEN MIT OUTLOOK FÜR VERWALTUNGSANGESTELLTE Dezernat 6 Abteilung 4 Stand: 14.Oktober 2014 Inhalt 1. Einleitung 3 2. Räume & gemeinsame Termine finden 3 3. Rüstzeit 8 4. FAQ: Oft gestellte

Mehr

Anleitung zum erfassen von Last Minute Angeboten und Stellenangebote

Anleitung zum erfassen von Last Minute Angeboten und Stellenangebote Anleitung zum erfassen von Last Minute Angeboten und Stellenangebote Zweck dieser Anleitung ist es einen kleinen Überblick über die Funktion Last Minute auf Swisshotelportal zu erhalten. Für das erstellen

Mehr

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche

Mehr

Reporting Services und SharePoint 2010 Teil 1

Reporting Services und SharePoint 2010 Teil 1 Reporting Services und SharePoint 2010 Teil 1 Abstract Bei der Verwendung der Reporting Services in Zusammenhang mit SharePoint 2010 stellt sich immer wieder die Frage bei der Installation: Wo und Wie?

Mehr

Informatik Kurs Simulation. Hilfe für den Consideo Modeler

Informatik Kurs Simulation. Hilfe für den Consideo Modeler Hilfe für den Consideo Modeler Consideo stellt Schulen den Modeler kostenlos zur Verfügung. Wenden Sie sich an: http://consideo-modeler.de/ Der Modeler ist ein Werkzeug, das nicht für schulische Zwecke

Mehr

Beispiel Shop-Eintrag Ladenlokal & Online-Shop im Verzeichnis www.wir-lieben-shops.de 1

Beispiel Shop-Eintrag Ladenlokal & Online-Shop im Verzeichnis www.wir-lieben-shops.de 1 Beispiel Shop-Eintrag Ladenlokal & Online-Shop. Als Händler haben Sie beim Shop-Verzeichnis wir-lieben-shops.de die Möglichkeit einen oder mehrere Shop- Einträge zu erstellen. Es gibt 3 verschiedene Typen

Mehr

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst. 40-Tage-Wunder- Kurs Umarme, was Du nicht ändern kannst. Das sagt Wikipedia: Als Wunder (griechisch thauma) gilt umgangssprachlich ein Ereignis, dessen Zustandekommen man sich nicht erklären kann, so dass

Mehr

Bereich METIS (Texte im Internet) Zählmarkenrecherche

Bereich METIS (Texte im Internet) Zählmarkenrecherche Bereich METIS (Texte im Internet) Zählmarkenrecherche Über die Zählmarkenrecherche kann man nach der Eingabe des Privaten Identifikationscodes einer bestimmten Zählmarke, 1. Informationen zu dieser Zählmarke

Mehr

Die Dateiablage Der Weg zur Dateiablage

Die Dateiablage Der Weg zur Dateiablage Die Dateiablage In Ihrem Privatbereich haben Sie die Möglichkeit, Dateien verschiedener Formate abzulegen, zu sortieren, zu archivieren und in andere Dateiablagen der Plattform zu kopieren. In den Gruppen

Mehr

Wie halte ich Ordnung auf meiner Festplatte?

Wie halte ich Ordnung auf meiner Festplatte? Wie halte ich Ordnung auf meiner Festplatte? Was hältst du von folgender Ordnung? Du hast zu Hause einen Schrank. Alles was dir im Wege ist, Zeitungen, Briefe, schmutzige Wäsche, Essensreste, Küchenabfälle,

Mehr

GRAF-SYTECO. Handbuch. Zeichensatzgenerator für AT-Geräte. Erstellt: November 2004. SYsteme TEchnischer COmmunikation

GRAF-SYTECO. Handbuch. Zeichensatzgenerator für AT-Geräte. Erstellt: November 2004. SYsteme TEchnischer COmmunikation GRAF-SYTECO Handbuch Zeichensatzgenerator für AT-Geräte Dokument: Status: H165A0 Freigegeben Erstellt: November 2004 SYsteme TEchnischer COmmunikation GRAF-SYTECO Gmbh & Co.KG * Kaiserstrasse 18 * D-78609

Mehr

2. Speichern und öffnen

2. Speichern und öffnen 2. Speichern und öffnen In diesem Modul lernen Sie, ein Dokument zum ersten Mal zu speichern, zu öffnen, nochmals zu speichern unter demselben Namen, nachdem Sie etwas geändert haben, zu speichern als

Mehr

Schrittweise Anleitung zur Erstellung einer Angebotseite 1. In Ihrem Dashboard klicken Sie auf Neu anlegen, um eine neue Seite zu erstellen.

Schrittweise Anleitung zur Erstellung einer Angebotseite 1. In Ihrem Dashboard klicken Sie auf Neu anlegen, um eine neue Seite zu erstellen. Schrittweise Anleitung zur Erstellung einer Angebotseite 1. In Ihrem Dashboard klicken Sie auf Neu anlegen, um eine neue Seite zu erstellen. Klicken Sie auf Neu anlegen, um Ihre neue Angebotseite zu erstellen..

Mehr

Updatebeschreibung JAVA Version 3.6 und Internet Version 1.2

Updatebeschreibung JAVA Version 3.6 und Internet Version 1.2 Updatebeschreibung JAVA Version 3.6 und Internet Version 1.2 Hier finden Sie die Beschreibung der letzten Änderungen und Aktualisierungen. Bei Fragen und Anregungen steht das EDI-Real-Team unter +43 732

Mehr