/********************************************************************************** * * * Check Box Applet * * ( CheckBox.java ) * * Author : Seiichi Inoue * **********************************************************************************/ /********************** << Imported package class definition >> *******************/ import java.applet.Applet; /* Applet packages */ import java.awt.*; /* All of the Abstract Windowing Toolkit packages */ import java.lang.Math; /* Math packages */ /************************** <<Oneself of class definition>> ***********************/ // Class name : CheckBox // Access control : public( Access possibility even from which class ) // Extends class : Applet // Implements class: Runnable( Use of Thread is enabled ) // Input parameter : NAME="r" ( Radius ) // NAME="node" ( Node number ) public class CheckBox extends Applet implements Runnable { /************************* << Class attribute of definition >> ********************/ Thread kicker=null; /* Thread(Initial value:suspension) */ Dimension d; /* Display range */ Image offs; /* Off screen */ Graphics grf; /* Drawing range */ String param; /* Parameter reading */ int r; /* Drawing radius */ int n; /* Node number */ int x; /* Drawing offset (horizontal) */ int y; /* Drawing offset (vertical) */ int k; /* Starting position counter */ int x1; /* Starting horizontal axis (x) */ int y1; /* Starting vertical axis (y) */ int j; /* Ending position counter */ int x2; /* Ending horizontal axis (x) */ int y2; /* Ending vertical axis (y) */ /***************** << Class of method (implementation procedure) >> ***************/ // /******** Initialization (init) method *********/ public void init() { d = size(); /* Set display screen size */ offs = createImage(d.width,d.height); /* Off scr area preparation */ grf = offs.getGraphics(); /* Graphics object extraction */ grf.setColor(Color.white); /* Set display back color */ grf.fillRect(0,0,d.width,d.height); /* Display range is applied */ param = getParameter("r"); /* Radius parameter reading */ r = (param != null)? /* Input determination */ Integer.parseInt(param): 100; param = getParameter("node"); /* Node number parameter reading */ n = (param != null)? /* Input determination */ Integer.parseInt(param): 16; setLayout(new BorderLayout()); /* Set Border Layout */ Panel p = new Panel(); /* Set Panel instance */ p.setBackground(Color.yellow); /* Set Background color of panel */ p.setLayout(new GridLayout(1,8)); /* Arrange checkbox to grid */ CheckboxGroup cg = new CheckboxGroup(); /* Set Group of the checkbox */ p.add(new Checkbox("red",cg,true)); /* Red color checkbox (initial) */ p.add(new Checkbox("pink",cg,false)); /* Pink color checkbox */ p.add(new Checkbox("orange",cg,false)); /* Orange color checkbox */ p.add(new Checkbox("yellow",cg,false)); /* Yellow color checkbox */ p.add(new Checkbox("green",cg,false)); /* Green color checkbox */ p.add(new Checkbox("cyan",cg,false)); /* Cyan color checkbox */ p.add(new Checkbox("blue",cg,false)); /* Blue color checkbox */ p.add(new Checkbox("gray",cg,false)); /* Gray color checkbox */ add("South",p); /* Set Panel to the lower part */ grf.setColor( Color.red ); /* Set initial color(red) */ } /* End of initial method */ /*************** Action method *****************/ public boolean action(Event e,Object o) { Checkbox c = (Checkbox)e.target; /* Get object that was clicked */ if ("red".equals(c.getLabel())) /* Red color box ? */ grf.setColor( Color.red ); /* Set red color */ else if ("pink".equals(c.getLabel())) /* Pink color box ? */ grf.setColor( Color.pink ); /* Set pink color */ else if ("orange".equals(c.getLabel())) /* Orange color box ? */ grf.setColor( Color.orange ); /* Set orange color */ else if ("yellow".equals(c.getLabel())) /* Yellow color box ? */ grf.setColor( Color.yellow ); /* Set yellow color */ else if ("green".equals(c.getLabel())) /* Green color box ? */ grf.setColor( Color.green ); /* Set green color */ else if ("cyan".equals(c.getLabel())) /* Cyan color box ? */ grf.setColor( Color.cyan ); /* Set cyan color */ else if ("blue".equals(c.getLabel())) /* Blue color box ? */ grf.setColor( Color.blue ); /* Set blue color */ else if ("gray".equals(c.getLabel())) /* Gray color box ? */ grf.setColor( Color.gray ); /* Set grau color */ else /* Neither which color? */ grf.setColor( Color.black ); /* Set black color */ return true; } /* End of action method */ /************ Start (start) method *************/ public void start() { if ( kicker == null ) { /* Kicker is null? ( Suspension? )*/ kicker = new Thread(this); /* YES: kicker setting */ kicker.start(); /* Setting of start */ } } /* End of start method */ /*********** Repeatedly (run) method ***********/ public void run() { Thread.currentThread().setPriority(Thread.NORM_PRIORITY-3); while( kicker != null) { /* Repeat until kicker becomes null */ try { /* Interruption confirmation */ double rd=3.14159/180; /* Angle value is made 64 bit */ for ( k=0; k<=n-2; k++ ) { /* Drawing start point calculation*/ x1 = (int) ( r*Math.cos( k*360/n*rd ) + r ); /* Start x axis */ y1 = (int) ( r*Math.sin( k*360/n*rd ) + r ); /* Start y axis */ x = ( d.width - r*2 )/2; /* Offset calculation */ if ( x <= 0 ) /* Offset determination(negative?)*/ x = 0; /* YES: Zero setting */ x1 += x; /* Start offset addition */ y = ( d.height - r*2 )/2; /* Offset calculation */ if ( y <= 0 ) /* Offset determination(negative?)*/ y = 0; /* YES: Zero setting */ y1 += y; /* Start offset addition */ for ( j=k+1; j<=n-1; j++ ) {/* Drawing end point calculation */ x2 = (int) ( r*Math.cos( j*360/n*rd ) + r );/* End x axis */ y2 = (int) ( r*Math.sin( j*360/n*rd ) + r );/* End y axis */ x2 += x; /* End offset addition */ y2 += y; /* End offset addition */ kicker.sleep(20); /* Line drawing waiting (20mSEC) */ repaint(); /* Drawing method calling */ } } } catch(InterruptedException e) {} /* Interruption processing */ } kicker = null; /* Repeate process completion set */ } /* End of run method */ /*********** Renewal (update) method ***********/ public void update(Graphics g) { /* Lost of screen flickering */ paint(g); /* Drawing */ } /* End of update method */ /*********** Drawing (paint) method ************/ public void paint(Graphics g) { grf.drawLine( x1,y1,x2,y2 ); /* Display information setting */ g.drawImage(offs,0,0,this); /* Drawing setting */ } /************ Stop (stop) method ***************/ public void stop() { if( kicker != null ) { /* Kicker is not null?( action? ) */ kicker.stop(); /* Set kicker to suspension */ kicker = null; /* Set kicker suspension condition*/ } } /* End of stop method */ } /* End of class setting */ /********************************************************************************** * End of Check Box Applet * **********************************************************************************/