/***************************************************************/ /* Prof. Dr. Gregor Büchel */ /* Source : Graph1a.java */ /* Beispielprogramm für AWT-Methoden der GUI-Verarbeitung mit */ /* Grafik. Verwendete Klassen: Panel, Graphics, Windowadapter */ /* (Implementation der Schnittstelle WindowListener), Frame. */ /* Stand: 22.06.2004 */ /***************************************************************/ import java.awt.*; import java.awt.event.*; class MyPa1 extends java.awt.Panel {int a; public void paint(Graphics g) {int i, xi, yi; double xw, yw; String aw=new String(); String bw=new String(); switch(a) {case 1: g.drawLine(10,300,750,300); /* x-Achse */ g.drawLine(300,10,300,550); /* y-Achse */ g.drawLine(745,298,750,300); /* Spitze: x-Achse */ g.drawLine(745,302,750,300); /* " */ g.drawLine(298,15,300,10); /* Spitze: y-Achse */ g.drawLine(302,15,300,10); /* " */ g.drawString("y",280,20); g.drawString("x",745,320); for (i=-5; i<=5 ; i++) {/* xi = 300 + i* 50 ; yi = xi (Spezialfall) */ if (i==0) continue; aw=aw.valueOf(i); xi=300+i*50; g.drawString(aw,xi,320); /* Skalierung x-Achse */ g.drawLine(xi,298,xi,302); /* " */ g.drawString(aw,280,xi); /* Skalierung y-Achse */ g.drawLine(298,xi,302,xi); /* " */ } break; case 2: g.drawOval(300,250,150,150); break; case 3: g.drawLine(10,300,750,300); /* x-Achse */ g.drawLine(300,10,300,550); /* y-Achse */ g.drawLine(745,298,750,300); /* Spitze: x-Achse */ g.drawLine(745,302,750,300); /* " */ g.drawLine(298,15,300,10); /* Spitze: y-Achse */ g.drawLine(302,15,300,10); /* " */ g.drawString("y",280,20); g.drawString("x",745,320); for (i=-5; i<=5 ; i++) {/* xi = 300 + i* 50 ; yi = xi (Spezialfall) */ if (i==0) continue; aw=aw.valueOf(i); xi=300+i*50; g.drawString(aw,xi,320); /* Skalierung x-Achse */ g.drawLine(xi,298,xi,302); /* " */ g.drawString(aw,280,xi); /* Skalierung y-Achse */ g.drawLine(298,xi,302,xi); /* " */ } /* Polynom y=x*(x*x-4) */ /* Berechnung: xi=i+300 ; yi=xi*(xi*xi-200)+300 */ /* Intervall [-2.4,2.4] <=> -120<=i<=120 */ for (i=-120; i<=120; i++) { xi=300+i; xw=i/50.; yw=xw*(xw*xw-4.); yi=(int)(yw*50.)+300; g.drawLine(xi,yi,xi,yi); } break; case 4: g.drawLine(0,300,750,300); /* x-Achse */ g.drawLine(300,10,300,550); /* y-Achse */ g.drawLine(745,298,750,300); /* Spitze: x-Achse */ g.drawLine(745,302,750,300); /* " */ g.drawLine(298,15,300,10); /* Spitze: y-Achse */ g.drawLine(302,15,300,10); /* " */ g.drawString("y",280,20); g.drawString("x",745,320); for (i=-6; i<=6 ; i++) {/* Skalierung x-Achse */ if (i==0) continue; aw=aw.valueOf(i); aw=aw+"PI/2"; xi=300+i*50; g.drawString(aw,xi,320); /* Skalierung x-Achse */ g.drawLine(xi,298,xi,302); /* " */ } for (i=-5; i<=5 ; i++) {/* Skalierung y-Achse */ if (i==0) continue; if (i%2==0) bw=bw.valueOf(i/2); else bw=" "; xi=300-i*50; g.drawString(bw,280,xi); /* Skalierung y-Achse */ g.drawLine(298,xi,302,xi); /* " */ } /* Sinusfunktion: */ /* Berechnung: xi=i+300 ; yi=sin(xi)-300 */ /* Intervall [-3PI,3PI] <=> -300<=i<=300 */ for (i=-300; i<=300; i++) { xi=300+i; xw=(i/100.)*Math.PI; yw=Math.sin(xw); yi=(int)(yw*(-100.))+300; g.drawLine(xi,yi,xi,yi); } break; default: g.drawString("Keine gültige Eingabe",30,30); } } } class Fohr extends WindowAdapter {public void windowClosing(WindowEvent e) {e.getWindow().setVisible(false); e.getWindow().dispose(); } } class Graph1a { public static void main(String args[]) {int i1=1, iz=0; String s1=new String("Koordinatensystem"); String s2=new String(); String s3=new String(" ("); String s4=new String(")"); MyPa1 p1; Fohr ew1=new Fohr(); Frame g1=new Frame("Koordinatensystem"); p1=new MyPa1(); p1.a=1; g1.addWindowListener(ew1); g1.add(p1); g1.show(); do { System.out.println("Gregors Grafik-Bastelstube arbeitet: "); System.out.println(" (1) Koordinatensystem"); System.out.println(" (2) Ellipse"); System.out.println(" (3) Kubisches Polynom"); System.out.println(" (4) Trigonometrie"); System.out.println(" (0) ENDE"); i1=IO1.einint(); switch(i1) {case 1: p1.a=1; iz=iz+1; s2=s2.valueOf(iz); g1.setTitle(s1.concat(s3.concat(s2.concat(s4)))); p1.repaint(); break; case 2: p1.a=2; g1.setTitle("Ellipse"); p1.repaint(); break; case 3: p1.a=3; g1.setTitle("Polynom y=x*(x*x-4)"); p1.repaint(); break; case 4: p1.a=4; g1.setTitle("Trigonometrie: y=sin(x)"); p1.repaint(); break; case 0: System.exit(0); break; default: p1.a=-999; g1.setTitle("Ungueltig!"); p1.repaint(); } } while (i1!=0); } }