import java.awt.*; import java.applet.*; public class SchrodingerII extends Applet { double x,xold,E,Eold,E0,dx,phi,phi_old,dphi,dphi_old,d2phi,V; double p; Panel p1; Button b1; Label l1,l2; Scrollbar s1; Choice Potential; String initialE=" Energy= "; String parity="Parity= "; int type; public void init(){ setLayout(new BorderLayout()); p1=new Panel(); b1=new Button("change parity"); l1=new Label(initialE + "0.1" ); l2=new Label(parity + "1.0"); s1=new Scrollbar(Scrollbar.HORIZONTAL,200,0,0,20001); p1.setLayout(new GridLayout(2,3,6,6)); Potential=new Choice(); Potential.addItem("Square"); Potential.addItem("Triangular"); p1.add(l1); p1.add(l2); p1.add(Potential); p1.add(s1); p1.add(b1); add("South",p1); dx=0.001;p=1.0; type=0; } public void paint(Graphics g){ g.setColor(Color.white); g.fillRect(10,10,400,300); g.setColor(Color.red); g.drawRect(10,10,400,300); g.drawLine(10,160,410,160); // draw the well g.drawLine(210,10,210,310); if(type==0){ g.drawLine(10,100,130,100); g.drawLine(130,100,130,160); g.drawLine(130,160,290,160); g.drawLine(290,160,290,100); g.drawLine(290,100,410,100);} else{ g.drawLine(130,100,210,160); g.drawLine(210,160,290,100); g.drawLine(290,100,410,100); g.drawLine(10,100,130,100);} g.drawString("-4.0",123,171); g.drawString("4.0", 283,171); g.drawString("x",400,716); g.drawString("E", 215,18); if(p>=0.0){phi=1.0;x=0.0;dphi=0.0;} else{phi=0.0;x=0.0;dphi=1.0;} g.setColor(Color.blue); do { x=x+dx; if(type==0){ if(Math.abs(x)>4.0){ V=8.0;} else V=0.0;} else{ if(Math.abs(x)>4.0){ V=8.0;} else V=Math.abs(2.0*x);} d2phi=2*(V-E)*phi; dphi=dphi+d2phi*dx; phi=phi+dphi*dx; g.drawOval(210+(int)(20.0*x),160-(int)(50*phi),2,2); g.drawOval(210-(int)(20.0*x),160-(int)(p*50*phi),2,2); }while(Math.abs(phi)<=3 && x<10.0); } public boolean handleEvent(Event e){ if(e.target instanceof Scrollbar){ int value=((Scrollbar)e.target).getValue(); if(e.target==s1){ E=((double)value)/2000.0; l1.setText(initialE + Double.toString(E));} repaint();} if(e.target == b1){ p=-p;l2.setText(parity + Double.toString(p)); repaint();} else if(e.target instanceof Choice){ type=Potential.getSelectedIndex();repaint();} return true;} }