2024年9月applets(帮忙解释一下,JDK中的demo里面的applets.html的第一个例子,xyzapp.java)

 更新时间:2024-10-12

  ⑴applets(帮忙解释一下,JDK中的demo里面的applets.html的第一个例子,xyzapp.java

  ⑵xyzapp.java帮忙解释一下,本文目录帮忙解释一下,关于各个库文件的只是你在MSDN里搜索吧,粘贴到MSDN里查一下,没有MSDN就贴到百度或Google里查,JDK中的demo里面的applets.html的第一个例子,JDK中的demo里面的applets.html的第一个例子,没什么好解释的。

  ⑶帮忙解释一下,JDK中的demo里面的applets.html的第一个例子,xyzapp.java

  ⑷哪一个啊?这个啊。。也太长了点吧。。importjava.applet.Applet;importjava.awt.Image;importjava.awt.Event;importjava.awt.Graphics;importjava.awt.Dimension;importjava.io.*;importjava..URL;importjava.util.Hashtable;importjava.awt.image.IndexColorModel;importjava.awt.image.ColorModel;importjava.awt.image.MemoryImageSource;importjava.awt.event.*;/**上面是导入库文件,没什么好解释的,关于各个库文件的只是你在MSDN里搜索吧,你主要弄明白各个函数的用法和返回值就行了,你把用到的函数复制一下,粘贴到MSDN里查一下,没有MSDN就贴到百度或Google里查。*//**TherepresentationofaChemical.xyzmodel*/classXYZChemModel{floatvert;Atomatoms;inttvert;intZsortMap;intnvert,maxvert;staticHashtableatomTable=newHashtable();staticAtomdefaultAtom;static{atomTable.put(“c“,newAtom(,,));atomTable.put(“h“,newAtom(,,));atomTable.put(“n“,newAtom(,,));atomTable.put(“o“,newAtom(,,));atomTable.put(“p“,newAtom(,,));atomTable.put(“s“,newAtom(,,));atomTable.put(“hn“,newAtom(,,));/*!!*/defaultAtom=newAtom(,,);}booleantransformed;MatrixDmat;floatxmin,xmax,ymin,ymax,zmin,zmax;XYZChemModel(){mat=newMatrixD();mat.xrot();mat.yrot();}/**CreateaCehmicalmodelbyparsinganinputstream*/XYZChemModel(InputStreamis)throwsException{this();StreamTokenizerst=newStreamTokenizer(newBufferedReader(newInputStreamReader(is)));st.eolIsSignificant(true);st.mentChar(’#’);intslot=;try{scan:while(true){switch(st.nextToken()){caseStreamTokenizer.TT_EOF:breakscan;default:break;caseStreamTokenizer.TT_WORD:Stringname=st.sval;doublex=,y=,z=;if(st.nextToken()==StreamTokenizer.TT_NUMBER){x=st.nval;if(st.nextToken()==StreamTokenizer.TT_NUMBER){y=st.nval;if(st.nextToken()==StreamTokenizer.TT_NUMBER)z=st.nval;}}addVert(name,(float)x,(float)y,(float)z);while(st.ttype!=StreamTokenizer.TT_EOL&&st.ttype!=StreamTokenizer.TT_EOF)st.nextToken();}//endSwitch}//endwhileis.close();}//endTrycatch(IOExceptione){}if(st.ttype!=StreamTokenizer.TT_EOF)thrownewException(st.toString());}//endXYZChemModel()/**Addavertextothismodel*/intaddVert(Stringname,floatx,floaty,floatz){inti=nvert;if(i》=maxvert)if(vert==null){maxvert=;vert=newfloat;atoms=newAtom;}else{maxvert*=;floatnv;System.arraycopy(vert,,nv,,vert.length);vert=nv;Atomna;System.arraycopy(atoms,,na,,atoms.length);atoms=na;}Atoma=(Atom)atomTable.get(name.toLowerCase());if(a==null)a=defaultAtom;atoms=a;i*=;vert=x;vert=y;vert=z;returnnvert++;}/**Transformallthepointsinthismodel*/voidtransform(){if(transformed||nvert《=)return;if(tvert==null||tvert.length《nvert*)tvert=newint;mat.transform(vert,tvert,nvert);transformed=true;}/**Paintthismodeltoagraphicscontext.Itusesthematrixassociatedwiththismodeltomapfrommodelspacetoscreenspace.Thenextversionofthebrowsershouldhavedoublebuffering,whichwillmakethis*much*nicer*/voidpaint(Graphicsg){if(vert==null||nvert《=)return;transform();intv=tvert;intzs=ZsortMap;if(zs==null){ZsortMap=zs=newint;for(inti=nvert;--i》=;)zs=i*;}/**Iuseabubblesortsincefromoneiterationtothenext,thesort*orderisprettystable,soIjustusewhatIhadlasttimeasa*“guess“ofthesortedorder.Withluck,thisreducesO(NlogN)*toO(N)*/for(inti=nvert-;--i》=;){booleanflipped=false;for(intj=;j《=i;j++){inta=zs;intb=zs;if(v){zs=a;zs=b;flipped=true;}}if(!flipped)break;}intlg=;intlim=nvert;Atomls=atoms;if(lim《=||nvert《=)return;for(inti=;i《lim;i++){intj=zs;intgrey=v;if(grey《)grey=;if(grey》)grey=;//g.drawString(names);atoms,grey);//g.drawImage(iBall,v-//(iBall.height》》));}}/**Findtheboundingboxofthismodel*/voidfindBB(){if(nvert《=)return;floatv=vert;floatxmin=v,xmax=xmin;floatymin=v,ymax=ymin;floatzmin=v,zmax=zmin;for(inti=nvert*;(i-=)》;){floatx=v;if(x《xmin)xmin=x;if(x》xmax)xmax=x;floaty=v;if(y《ymin)ymin=y;if(y》ymax)ymax=y;floatz=v;if(z《zmin)zmin=z;if(z》zmax)zmax=z;}this.xmax=xmax;this.xmin=xmin;this.ymax=ymax;this.ymin=ymin;this.zmax=zmax;this.zmin=zmin;}}/**AnapplettoputaChemicalmodelintoapage*/publilassXYZAppextendsAppletimplementsRunnable,MouseListener,MouseMotionListener{XYZChemModelmd;booleanpainted=true;floatxfac;intprevx,prevy;floatxtheta,ytheta;floatscalefudge=;MatrixDamat=newMatrixD(),tmat=newMatrixD();Stringmdname=null;Stringmessage=null;ImagebackBuffer;GraphicsbackGC;DimensionbackSize;privatesynchronizedvoidnewBackBuffer(){backBuffer=createImage(getSize().width,getSize().height);if(backGC!=null){backGC.dispose();}backGC=backBuffer.getGraphics();backSize=getSize();}publicvoidinit(){mdname=getParameter(“model“);try{scalefudge=Float.valueOf(getParameter(“scale“)).floatValue();}catch(Exceptione){};amat.yrot();amat.xrot();if(mdname==null)mdname=“model.obj“;resize(getSize().width《=?:getSize().width,getSize().height《=?:getSize().height);newBackBuffer();addMouseListener(this);addMouseMotionListener(this);}publicvoiddestroy(){removeMouseListener(this);removeMouseMotionListener(this);}publicvoidrun(){InputStreamis=null;try{Thread.currentThread().setPriority(Thread.MIN_PRIORITY);is=newURL(getDocumentBase(),mdname).openStream();XYZChemModelm=newXYZChemModel(is);Atom.setApplet(this);md=m;m.findBB();floatxw=m.xmax-m.xmin;floatyw=m.ymax-m.ymin;floatzw=m.zmax-m.zmin;if(yw》xw)xw=yw;if(zw》xw)xw=zw;floatf=getSize().width/xw;floatf=getSize().height/xw;xfac=.f*(f《f?f:f)*scalefudge;}catch(Exceptione){e.printStackTrace();md=null;message=e.toString();}try{if(is!=null)is.close();}catch(Exceptione){}repaint();}publicvoidstart(){if(md==null&&message==null)newThread(this).start();}publicvoidstop(){}/*eventhandling*/publicvoidmouseClicked(MouseEvente){}publicvoidmousePressed(MouseEvente){prevx=e.getX();prevy=e.getY();e.consume();}publicvoidmouseReleased(MouseEvente){}publicvoidmouseEntered(MouseEvente){}publicvoidmouseExited(MouseEvente){}publicvoidmouseDragged(MouseEvente){intx=e.getX();inty=e.getY();tmat.unit();floatxtheta=(prevy-y)*(.f/getSize().width);floatytheta=(x-prevx)*(.f/getSize().height);tmat.xrot(xtheta);tmat.yrot(ytheta);amat.mult(tmat);if(painted){painted=false;repaint();}prevx=x;prevy=y;e.consume();}publicvoidmouseMoved(MouseEvente){}publicvoidupdate(Graphicsg){if(backBuffer==null)g.clearRect(,,getSize().width,getSize().height);paint(g);}publicvoidpaint(Graphicsg){if(md!=null){md.mat.unit();md.mat.translate(-(md.xmin+md.xmax)/,-(md.ymin+md.ymax)/,-(md.zmin+md.zmax)/);md.mat.mult(amat);//md.mat.scale(xfac,-xfac,*xfac/getSize().width);md.mat.scale(xfac,-xfac,*xfac/getSize().width);md.mat.translate(getSize().width/,getSize().height/,);md.transformed=false;if(backBuffer!=null){if(!backSize.equals(getSize()))newBackBuffer();backGC.setColor(getBackground());backGC.fillRect(,,getSize().width,getSize().height);md.paint(backGC);g.drawImage(backBuffer,,,this);}elsemd.paint(g);setPainted();}elseif(message!=null){g.drawString(“Errorinmodel:“,,);g.drawString(message,,);}}privatesynchronizedvoidsetPainted(){painted=true;notifyAll();}privatesynchronizedvoidwaitPainted(){while(!painted){try{wait();}catch(InterruptedExceptione){}}painted=false;}publicStringgetAppletInfo(){return“Title:XYZApp

  ⑸Author:JamesGosling

  ⑹AnapplettoputaChemicalmodelintoapage.“;}publicStringgetParameterInfo(){Stringinfo={{“model“,“pathstring“,“Thepathtothemodeltobedisplayedin.xyzformat().Defaultismodel.obj.“},{“scale“,“float“,“Scalefactor.Defaultis(i.e.noscale).“}};returninfo;}}//endclassXYZAppclassAtom{privatestaticAppletapplet;privatestaticbytedata;privatefinalstaticintR=;privatefinalstaticinthx=;privatefinalstaticinthy=;privatefinalstaticintbgGrey=;privatefinalstaticintnBalls=;privatestaticintmaxr;privateintRl;privateintGl;privateintBl;privateImageballs;static{data=newbyte;intmr=;for(intY=*R;--Y》=;){intx=(int)(Math.sqrt(R*R-(Y-R)*(Y-R))+.);intp=Y*(R*)+R-x;for(intX=-x;X《x;X++){intx=X+hx;inty=Y-R+hy;intr=(int)(Math.sqrt(x*x+y*y)+.);if(r》mr)mr=r;data=r《=?:(byte)r;}}maxr=mr;}staticvoidsetApplet(Appletapp){applet=app;}Atom(intRl,intGl,intBl){this.Rl=Rl;this.Gl=Gl;this.Bl=Bl;}privatefinalintblend(intfg,intbg,floatfgfactor){return(int)(bg+(fg-bg)*fgfactor);}privatevoidSetup(){balls=newImage;bytered;red=(byte)bgGrey;bytegreen;green=(byte)bgGrey;byteblue;blue=(byte)bgGrey;for(intr=;r《nBalls;r++){floatb=(float)(r+)/nBalls;for(inti=maxr;i》=;--i){floatd=(float)i/maxr;red=(byte)blend(blend(Rl,,d),bgGrey,b);green=(byte)blend(blend(Gl,,d),bgGrey,b);blue=(byte)blend(blend(Bl,,d),bgGrey,b);}IndexColorModelmodel=newIndexColorModel(,maxr+,red,green,blue,);balls=applet.createImage(newMemoryImageSource(R*,R*,model,data,,R*));}}voidpaint(Graphicsgc,intx,inty,intr){Imageba=balls;if(ba==null){Setup();ba=balls;}Imagei=ba;intsize=+r;gc.drawImage(i,x-(size》》),y-(size》》),size,size,applet);}}

您可能感兴趣的文章:

相关文章