import java.awt.*; import java.applet.*; public class Quadra extends Applet { drawQuadra drawingCanvas; Panel PrmPanel; TextField TFprmA, TFprmB, TFprmC; double prmA=0.5, prmB=2.0, prmC=-3.0; public void init() { setLayout(new BorderLayout()); PrmPanel = new Panel(); PrmPanel.setLayout(new FlowLayout()); PrmPanel.add(new Label("Y=", Label.RIGHT)); PrmPanel.add(TFprmA = new TextField(String.valueOf(prmA), 4)); PrmPanel.add(new Label("X^2 + ")); PrmPanel.add(TFprmB = new TextField(String.valueOf(prmB), 4)); PrmPanel.add(new Label("X + ")); PrmPanel.add(TFprmC = new TextField(String.valueOf(prmC), 4)); add("Center", drawingCanvas = new drawQuadra(prmA, prmB, prmC)); add("South", PrmPanel); } public boolean action(Event ev, Object arg) { if (ev.target instanceof TextField) { prmA = Float.valueOf(TFprmA.getText().trim()).floatValue(); prmB = Float.valueOf(TFprmB.getText().trim()).floatValue(); prmC = Float.valueOf(TFprmC.getText().trim()).floatValue(); drawingCanvas.redraw(prmA, prmB, prmC); return true; } else return true; } public boolean handleEvent(Event e) { if (e.id == Event.WINDOW_DESTROY) { stop(); destroy(); System.exit(0); return true; } else { return super.handleEvent(e); } } public static void main(String args[]) { PFrame f = new PFrame("Quadratic Function"); Quadra quadratic_function = new Quadra(); quadratic_function.init(); quadratic_function.start(); f.add("Center", quadratic_function); f.resize(420, 500); f.show(); } } class PFrame extends Frame { PFrame(String title) { super(title); } public boolean handleEvent(Event e) { if (e.id == Event.WINDOW_DESTROY) { dispose(); System.exit(0); } return false; } } class drawQuadra extends Canvas { double paramA = 0.1, paramB = -0.0, paramC = -3.0; Point A = new Point(0,0), B = new Point(0,0); Point O = new Point(0,0); Point U = new Point(20,20); int Height, Width; drawQuadra(double paramA, double paramB, double paramC) { this.paramA = paramA; this.paramB = paramB; this.paramC = paramC; repaint(); } public void redraw(double paramA, double paramB, double paramC) { this.paramA = paramA; this.paramB = paramB; this.paramC = paramC; repaint(); } public void aw2px(Point t, double x, double y){ t.x = (int)( x * (double)U.x + (double)O.x ); t.y = (int)( - y * (double)U.y + (double)O.y ); } public void draw_coordinate(Graphics g) { Height = size().height; Width = size().width; O.x = Height / 2; O.y = Width / 2; g.setColor(Color.pink); for (int i = -10; i <= 10; i++) { aw2px(A, -10,i); aw2px(B, 10,i); g.drawLine(A.x, A.y, B.x, B.y); } for (int i = -10; i <= 10; i++) { aw2px(A, i,-10); aw2px(B, i, 10); g.drawLine(A.x, A.y, B.x, B.y); } g.setColor(Color.black); aw2px(A,0,-10); aw2px(B,0, 10); g.drawLine(A.x, A.y, B.x, B.y); aw2px(A,-10,0); aw2px(B,10,0); g.drawLine(A.x, A.y, B.x, B.y); } public void paint(Graphics g) { draw_coordinate(g); g.setColor(Color.red); double ss = -10.0, sss; while( ss < 10.0 ){ sss = ss + 0.01; aw2px(A, ss, paramA * ss * ss + paramB * ss + paramC); aw2px(B, sss,paramA * sss * sss + paramB * sss + paramC); g.drawLine(A.x, A.y, B.x, B.y); ss = sss; } } }