import java.applet.*; import java.awt.*; import IDD_DIALOG1; public class tree2 extends Applet { IDD_DIALOG1 dlg; Graphics g; double LPX,LPY,ANGLE,branch; int n=8,st=20; double rscale=1.4,lscale=1.4; public void init() { dlg=new IDD_DIALOG1(this); dlg.CreateControls(); dlg.IDC_SCROLLBAR1.setValues(st,20,0,160); resize(320, 240); g=getGraphics(); } public void paint(Graphics g) { double x0,y0,leng,angle; x0=180.0; y0=50.0; leng=70.0; angle=90.0; branch=0+st; tree(n,x0,y0,leng,angle); } public void tree(int n,double x0,double y0,double leng,double angle) { if (n==0) return; LPX=x0;LPY=y0; ANGLE=angle; move(leng); x0=LPX;y0=LPY; tree(n-1,x0,y0,leng/rscale,angle-branch); tree(n-1,x0,y0,leng/lscale,angle+branch); } public void move(double l) { double x,y,rd=3.14159/180; x=l*Math.cos(rd*ANGLE);y=l*Math.sin(rd*ANGLE); g.drawLine((int)LPX,300-(int)LPY,(int)(LPX+x),300-(int)(LPY+y)); LPX=LPX+x;LPY=LPY+y; } public boolean handleEvent(Event evt) { if (evt.target==dlg.IDC_SCROLLBAR1){ st=dlg.IDC_SCROLLBAR1.getValue(); dlg.IDC_EDIT1.setText(String.valueOf(st)); repaint(); return true; } if (evt.target==dlg.IDC_RADIO1 && evt.id==Event.ACTION_EVENT){ lscale=1.4; repaint(); return true; } if (evt.target==dlg.IDC_RADIO2 && evt.id==Event.ACTION_EVENT){ lscale=1.6; repaint(); return true; } if (evt.target==dlg.IDC_RADIO3 && evt.id==Event.ACTION_EVENT){ lscale=2; repaint(); return true; } return true; } }