Java - Programmierung - Applets 1 import java.awt.*; import java.awt.event.*; import java.applet.applet; import Display; public class Oszi extends Applet implements Runnable, ActionListener, ItemListener, TextListener, AdjustmentListener Frame f; Thread change_phi; Display disp; Button b[]; Scrollbar sb; Checkbox cbd, cbl; TextField tf; boolean dyn; int phi, fw, art; public void init() change_phi = null; phi = 0; fw = 1; art = 0; dyn = false; setbackground(color.lightgray); setlayout(new BorderLayout()); // oben Panel oben = new Panel(); oben.setlayout(new FlowLayout(FlowLayout.CENTER)); b = new Button[5]; b[0] = new Button(" sin( x) "); b[1] = new Button(" sin(2x) "); b[2] = new Button("sin( x) + 1/3 sin(3x)"); b[3] = new Button("sin(2x) + 1/3 sin(6x)"); for ( int i = 0; i <= 3; i++) b[i].addactionlistener(this); oben.add(b[i]); add(oben, BorderLayout.NORTH); //links Panel links = new Panel(); b[4] = new Button("Aus"); b[4].addactionlistener(this); links.add(b[4]); add(links, BorderLayout.WEST); //zentral disp = new Display(); add(disp, BorderLayout.CENTER );
Java - Programmierung - Applets 2 //rechts sb = new Scrollbar(Scrollbar.VERTICAL, 0, 20, 0, 380); sb.addadjustmentlistener(this); sb.setunitincrement(3); sb.setblockincrement(30); add(sb, BorderLayout.EAST); //unten Panel unten = new Panel(); cbd = new Checkbox("Dynamik"); cbd.additemlistener(this); unten.add(cbd); cbl = new Checkbox("Lissajous"); cbl.additemlistener(this); unten.add(cbl); unten.add(new Label("Phasenwinkel")); tf = new TextField("0",3); tf.addtextlistener(this); unten.add(tf); unten.add(new Label(" ")); add(unten, BorderLayout.SOUTH); resize(460,420); // Zusatzfenster int ausw, ph; f = new Frame(); f.settitle("display Function"); try ausw = Integer.parseInt(getParameter("Auswahl")); catch (NumberFormatException e) ausw = 1; try ph = Integer.parseInt(getParameter("Phase")); catch (NumberFormatException e) ph = 0; if (ausw < 1) ausw = 1; ausw = ((ausw - 1) % 8) + 1; ph %= 360; if (phi < 0) ph += 360; f.add("center", new Display(ausw, ph));
Java - Programmierung - Applets 3 public void start() if (change_phi == null) change_phi = new Thread(this); change_phi.start(); change_phi.resume(); f.resize( 420, 400 ); f.setvisible(true); public void stop() change_phi.suspend(); f.setvisible(false); public void destroy() change_phi.stop(); f.dispose(); public void run() while (true) if (dyn && fw!= 0) phi++; phi %= 360; sb.setvalue(phi); tf.settext(new Integer(phi).toString()); try change_phi.sleep(100); catch(interruptedexception e); try change_phi.sleep(500); catch(interruptedexception e);
Java - Programmierung - Applets 4 public void itemstatechanged (ItemEvent e) Object obj = e.getsource(); if (obj == cbl) if (cbl.getstate()) art = 4; art = 0; if (fw!= 0) if (obj == cbd) if ( cbd.getstate() ) dyn = true; dyn = false; public void textvaluechanged (TextEvent e) Object obj = e.getsource(); if (obj == tf) phi = Integer.parseInt (tf.gettext()); if (phi < 0) phi = 0; if (phi > 360) phi = 360; sb.setvalue(phi); public void adjustmentvaluechanged (AdjustmentEvent e) Object obj = e.getsource(); if (obj == sb) phi = sb.getvalue(); tf.settext(new Integer(phi).toString()); public void actionperformed (ActionEvent e) Object obj = e.getsource(); 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.settext("0"); sb.setvalue(phi); cbd.setstate(false); cbl.setstate(false); void disp_new() disp.new_function(art + fw, phi); disp.repaint();
Java - Programmierung - Applets 5 <HTML> <HEAD> <TITLE>Oszilloscop</TITLE> </HEAD> <BODY> <h1>oszilloscop</h1> <P>Mit einem Oszilloscop können Sie die Spannungsverläufe als Funktion der Zeit beobachten</p> <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ö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(3x) (Auswahl = 3) bei einer Phasenverschiebung von 210 Grad (Phase = 210) dargestellt. In diesem Fenster ist die Funktionalität auf das Ausmessen von von Pegelwerten beschränkt. </BODY> </HTML>