Verteilte Software Java Applets 1 java lang Object
Verteilte Software - Java - Applets 1 java. lang. Object java. awt. Component paint(Graphics g) java. awt. Container paint(Graphics g) java. awt. Window java. awt. Panel java. awt. Frame java. awt. Applet init() start() stop() destroy() Prof. Dr. -Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik
Verteilte Software - Java - Applets 2 import java. awt. *; java. awt. event. *; java. applet. Applet; Display; public class Oszi extends Applet implements Runnable, Action. Listener, Item. Listener, Text. Listener, Adjustment. Listener { Frame f; Thread change_phi, change_phi_stop; Display disp; Button b[]; Scrollbar sb; Checkbox cbd, cbl; Text. Field tf; boolean dyn; // Dynamik int phi, // Phasenwinkel fw, // Funktionsauswahl art; // Darstellungsart public void init() { phi = 0; fw = 1; art = 0; dyn = false; change_phi = change_phi_stop = null; set. Background(Color. light. Gray); set. Layout(new Border. Layout()); // oben Panel oben = new Panel(); oben. set. Layout(new Flow. Layout(Flow. Layout. CENTER)); b = new Button[5]; b[0] = new Button(" sin( x) "); b[1] = new Button(" sin(2 x) "); b[2] = new Button("sin( x) + 1/3 sin(3 x)"); b[3] = new Button("sin(2 x) + 1/3 sin(6 x)"); for ( int i = 0; i <= 3; i++) { b[i]. add. Action. Listener(this); oben. add(b[i]); } add(oben, Border. Layout. NORTH); //links Panel links = new Panel(); b[4] = new Button("Aus"); b[4]. add. Action. Listener(this); links. add(b[4]); add(links, Border. Layout. WEST); //zentral disp = new Display(); add(disp, Border. Layout. CENTER ); Prof. Dr. -Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik
Verteilte Software - Java - Applets 3 //rechts sb = new Scrollbar(Scrollbar. VERTICAL, 0, 20, 0, 380); sb. add. Adjustment. Listener(this); sb. set. Unit. Increment(3); sb. set. Block. Increment(30); add(sb, Border. Layout. EAST); //unten Panel unten = new Panel(); cbd = new Checkbox("Dynamik"); cbd. add. Item. Listener(this); unten. add(cbd); cbl = new Checkbox("Lissajous"); cbl. add. Item. Listener(this); unten. add(cbl); unten. add(new Label("Phasenwinkel")); tf = new Text. Field("0", 3); tf. add. Text. Listener(this); unten. add(tf); unten. add(new Label("°")); add(unten, Border. Layout. SOUTH); set. Size(460, 420); // Zusatzfenster int ausw, ph; f = new Frame(); f. set. Title("Display Function"); try { ausw = Integer. parse. Int( get. Parameter("Auswahl")); } catch (Number. Format. Exception e) {ausw = 1; } try { ph = Integer. parse. Int( get. Parameter("Phase")); } catch (Number. Format. Exception e) {ph = 0; } if (ausw < 1) ausw = 1; else ausw = ((ausw - 1) % 8) + 1; ph %= 360; if (phi < 0) ph += 360; f. add("Center", new Display(ausw, ph)); } Prof. Dr. -Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik
Verteilte Software - Java - Applets 4 public void start() { if (change_phi == null) { change_phi = change_phi_stop = new Thread(this); change_phi. start(); } public void run() { Integer i = new Integer(0); while (change_phi == change_phi_stop) { if (dyn && fw != 0) { disp_new(); phi++; phi %= 360; sb. set. Value(phi); tf. set. Text(i. to. String(phi)); try { change_phi. sleep(100); } catch(Interrupted. Exception e){}; } else try { change_phi. sleep(500); } catch(Interrupted. Exception e){}; } f. set. Size( 420, 400 ); f. set. Visible(true); } public void stop() { change_phi_stop = null; try { change_phi. join(); } catch (Interrupted. Exception e) { System. out. print(e); } change_phi = null; f. set. Visible(false); } public void destroy() { f. dispose(); } } Prof. Dr. -Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik
Verteilte Software - Java - Applets 5 public void item. State. Changed (Item. Event e) { Object obj = e. get. Source(); if (obj == cbl) { if (cbl. get. State()) art = 4; else art = 0; if (fw != 0) disp_new(); } if (obj == cbd) { if (cbd. get. State()) dyn = true; else dyn = false; } } public void text. Value. Changed (Text. Event e) { Object obj = e. get. Source(); if (obj == tf) { phi = Integer. parse. Int(tf. get. Text()); if (phi < 0) phi = 0; if (phi > 360) phi = 360; sb. set. Value(phi); disp_new(); } } public void adjustment. Value. Changed (Adjustment. Event e) { Object obj = e. get. Source(); if (obj == sb) { phi = sb. get. Value(); tf. set. Text(new Integer(phi). to. String()); disp_new(); } } public void action. Performed(Action. Event e) { Object obj = e. get. Source(); if (obj instanceof Button) { for (int i = 0; i < 4; i++) if (obj == b[i]) fw = i + 1; if (obj == b[4]) { fw = 0; art = 0; phi = 0; dyn = false; tf. set. Text("0"); sb. set. Value(phi); cbd. set. State(false); cbl. set. State(false); } disp_new(); } } void disp_new() { disp. new_function(art + fw, phi); disp. repaint(); } } Prof. Dr. -Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik
Verteilte Software - Java - Applets 6 <HTML> <HEAD> <TITLE>Oszilloscop</TITLE> </HEAD> <BODY> <h 1>Oszilloscop</h 1> <P>Mit einem Oszilloscop kö nnen Sie die Spannungsverlä ufe als Funktion der Zeit beobachten</P> <HR ALIGN="CENTER"> <APPLET CODE="Oszi. class" WIDTH=500 HEIGHT=400 > <PARAM NAME=Auswahl VALUE=3> <PARAM NAME=Phase VALUE=210> </APPLET> <HR ALIGN="CENTER"> <p> In der obigen Nachbildung eines Oszilloscops kö nnen Sie zwischen vier verschieden Spannungsverlä ufen wä hlen. Die Darstellung kann als Zeitfunktion oder als Lissajous-Figur ü ber der Funktion sin(x) erfolgen. In der Zeitdarstellung k& ouml; nnen Sie mit der linken Maustaste einen Meß strahl zur Pegelbestimmung auslö ß en. In der Betriebsart "Dynamik" wird der Phasenwikel um 10 Grad je Sekunde verschoben. <p> In einem zusä tzlichen Applet-Fenster wir die Funktion sin(x) + 1/3 sin(3 x) (Auswahl = 3) bei einer Phasenverschiebung von 210 Grad (Phase = 210) dargestellt. In diesem Fenster ist die Funktionalitä t auf das Ausmessen von Pegelwerten beschrä nkt. </BODY> </HTML> Prof. Dr. -Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik
Verteilte Software - Java - Applets 7 Prof. Dr. -Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik
Verteilte Software - Java - Applets 8 <HTML> <HEAD> <TITLE>Blakenkreuz</TITLE> </HEAD> <BODY> <h 1>Balkenkreuz</h 1> <P>In zwei Applets verschieben Scrollbars die Balken horizontal bzw. vertikal. </P> <HR ALIGN="CENTER"> <APPLET CODE="Hbar. class" NAME="HBAR" WIDTH=300 HEIGHT=200 > </APPLET> miteinander kommunizierende Applets <APPLET CODE="Vbar. class" NAME="VBAR" WIDTH=200 HEIGHT=250 > </APPLET> </BODY> </HTML> Prof. Dr. -Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik
Verteilte Software - Java - Applets 9 java. applet. Applet get. Applet. Context() 1 1 1 java. applet. Applet. Context 2 1 1 1 Bar. Screen HBar add. Vbar() VValue. Changed() 1 1 1 1 Scroll. Bar <<uses>> 1 VBar add. Hbar() HValue. Changed() <<uses>> 2 <<implements>> 1 1 <<interface>> Adjustment. Listener <<implements>> Prof. Dr. -Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik
Verteilte Software - Java - Applets 10 import java. awt. *; public class Bar. Screen extends Canvas { int hvalue, vvalue; public Bar. Screen() { hvalue = vvalue = 0; set. Background(Color. blue); } public void set. HValue(int h) { hvalue = h; } public void set. VValue(int v) { vvalue = v; } public void paint( Graphics g ) { g. set. Color(Color. yellow); g. fill. Rect(hvalue * (get. Size(). width - 20) / 100, 0, 20, get. Size(). height); g. fill. Rect(0, vvalue * (get. Size(). height - 20) / 100, get. Size(). width, 20); } } Prof. Dr. -Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik
Verteilte Software - Java - Applets 11 import import java. awt. *; java. awt. event. *; java. applet. *; Bar. Screen; Vbar; public class Hbar extends Applet implements Adjustment. Listener { int hvalue; Scrollbar hsb; Bar. Screen bs; Applet. Context ac; Vbar vbar_source, vbar_dest; public void init() { hvalue = 0; set. Background(Color. blue); set. Layout(new Border. Layout()); //unten hsb = new Scrollbar (Scrollbar. HORIZONTAL, 0, 20, 0, 120); hsb. add. Adjustment. Listener(this); hsb. set. Unit. Increment(1); hsb. set. Block. Increment(10); add(hsb, Border. Layout. SOUTH); set. Size(300, 300); //zentral bs = new Bar. Screen(); add(bs, Border. Layout. CENTER ); ac = get. Applet. Context(); vbar_source = (Vbar) ac. get. Applet("VBAR"); if (vbar_source != null) vbar_source. add. Hbar(this); vbar_dest = null; } public void add. Vbar(Vbar vbar) { vbar_dest = vbar; } public void VValue. Changed(int vv) { bs. set. VValue(vv); bs. repaint(); } public void adjustment. Value. Changed (Adjustment. Event e) { Object obj = e. get. Source(); if (obj == hsb) { hvalue = hsb. get. Value(); bs. set. HValue( hvalue ); if(vbar_dest != null) vbar_dest. HValue. Changed(hvalue); bs. repaint(); } } } Prof. Dr. -Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik
Verteilte Software - Java - Applets 12 import import java. awt. *; java. awt. event. *; java. applet. *; Bar. Screen; Hbar; public class Vbar extends Applet implements Adjustment. Listener { int vvalue; Scrollbar vsb; Bar. Screen bs; Applet. Context ac; Hbar hbar_source, hbar_dest; public void init() { vvalue = 0; set. Background(Color. blue); set. Layout(new Border. Layout()); //links vsb = new Scrollbar (Scrollbar. VERTICAL, 0, 20, 0, 120); vsb. add. Adjustment. Listener(this); vsb. set. Unit. Increment(1); vsb. set. Block. Increment(10); add(vsb, Border. Layout. WEST); set. Size(300, 300); //zentral bs = new Bar. Screen(); add(bs, Border. Layout. CENTER ); ac = get. Applet. Context(); hbar_source = (Hbar) ac. get. Applet("HBAR"); if (hbar_source != null) hbar_source. add. Vbar(this); hbar_dest = null; } public void add. Hbar(Hbar hbar) { hbar_dest = hbar; } public void HValue. Changed(int hv) { bs. set. HValue(hv); bs. repaint(); } public void adjustment. Value. Changed (Adjustment. Event e) { Object obj = e. get. Source(); if (obj == vsb) { vvalue = vsb. get. Value(); bs. set. VValue( vvalue ); if (hbar_dest != null) hbar_dest. VValue. Changed(vvalue); bs. repaint(); } } } Prof. Dr. -Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik
- Slides: 12