⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 viewer.java

📁 演示win32的socket 通讯 八皇后的改进算法 并发Concurrency的JAVA实现 applet演示鼠标的点击时间和显示图象 手机J2ME的多线程演示
💻 JAVA
字号:
package concurrency.viewer;
import java.awt.*;
import java.applet.*;
import java.net.URL;
import java.util.*;
import java.awt.Image;
import java.awt.Graphics;
import java.awt.image.ColorModel;
import sun.audio.*;

class Viewer extends Frame {

    MenuBar mb;
    Menu example;
    Menu chapter[] = new Menu[12];
    MenuItem about, cruise,countdown,threaddemo,garden,carpark,semademo,
             buffer,nestedmonitor, fixednestedmonitor,
             diners,fixeddiners,bridge,readwrite,readwritepriority,readwritefair,
             golfclub,golfclubfifo,golfclubbounded,joindemo,
             syncmsg,selmsg,asyncmsg,rendezvous,
             fixedcruise,primes,supwork,announce,parcel,invaders,quit;
    Applet applet = null;
    MyAppletStub stub;
    MyAppletContext context;


    public Viewer() {
        mb = new MenuBar();
        example = new Menu("Example");
        mb.add(example);
        for (int i=0; i<12 ; ++i) {
            chapter[i] = new Menu("Chapter "+(i+1));
            example.add(chapter[i]);
        }
        about = new MenuItem("About Example Viewer");
        example.add(about);
        /* Chapter 1 */
        cruise = new MenuItem("Cruise Control");
        chapter[0].add(cruise);
        /* Chapter 2 */
        countdown = new MenuItem("CountDown");
        chapter[1].add(countdown);
        /* Chapter 3 */
        threaddemo = new MenuItem("Thread Demo");
        chapter[2].add(threaddemo);
        /* Chapter 4 */
        garden = new MenuItem("Garden");
        chapter[3].add(garden);
        /* Chapter 5 */
        carpark = new MenuItem("Car Park");
        chapter[4].add(carpark);
        semademo = new MenuItem("Semaphore Demo");
        chapter[4].add(semademo);
        buffer = new MenuItem("Bounded Buffer");
        chapter[4].add(buffer);
        nestedmonitor = new MenuItem("Nested Monitor");
        chapter[4].add(nestedmonitor);
        fixednestedmonitor = new MenuItem("Fixed Nested Monitor");
        chapter[4].add(fixednestedmonitor);
        /* Chapter 6 */
        diners = new MenuItem("Dining Philosophers");
        chapter[5].add(diners);
        fixeddiners = new MenuItem("Fixed Dining Philosophers");
        chapter[5].add(fixeddiners);
        /* Chapter 7 */
        bridge = new MenuItem("Single Lane Bridge");
        chapter[6].add(bridge);
        readwrite = new MenuItem("Readers Writers");
        chapter[6].add(readwrite);
        readwritepriority = new MenuItem("Readers Writers-Priority");
        chapter[6].add(readwritepriority);
        readwritefair = new MenuItem("Readers Writers Fair");
        chapter[6].add(readwritefair);
        /* Chapter 8 */
        fixedcruise = new MenuItem("Fixed Cruise Control");
        chapter[7].add(fixedcruise);
        /* Chapter 9 */
        golfclub = new MenuItem("Golf Club");
        chapter[8].add(golfclub);
        golfclubfifo = new MenuItem("Golf Club FiFo");
        chapter[8].add(golfclubfifo);
        golfclubbounded = new MenuItem("Golf Club Bounded Overtaking");
        chapter[8].add(golfclubbounded);
        joindemo = new MenuItem("Master - Slave");
        chapter[8].add(joindemo);
        /* Chapter 10 */
        syncmsg = new MenuItem("Synchronous Message");
        chapter[9].add(syncmsg);
        selmsg = new MenuItem("Selective Receive");
        chapter[9].add(selmsg);
        asyncmsg = new MenuItem("Asynchronous Message");
        chapter[9].add(asyncmsg);
        rendezvous = new MenuItem("Rendezvous");
        chapter[9].add(rendezvous);
        /* Chapter 11 */
        primes = new MenuItem("Primes Sieve");
        chapter[10].add(primes);
        supwork = new MenuItem("Supervisor - Worker");
        chapter[10].add(supwork);
        announce = new MenuItem("Announcer - Listener");
        chapter[10].add(announce);
        /* Chapter 12 */
        parcel = new MenuItem("Parcel Router");
        chapter[11].add(parcel);
        invaders = new MenuItem("Space Invaders");
        chapter[11].add(invaders);
        quit = new MenuItem("Quit");
        example.add(quit);
        setMenuBar(mb);
        context = new MyAppletContext();
        stub = new MyAppletStub(context);
        create(about);
    }

    void create(MenuItem mi) {
        if (applet!=null) {
            applet.stop();
            remove(applet);
        }
        setSize(600,400);
        if (mi==about) {
            applet = new Initial();
        /* Chapter 1 */
        } else if (mi == cruise) {
            stub.setParameter("fixed","FALSE");
            applet = new concurrency.cruise.CruiseControl();
        /* Chapter 2 */
        } else if (mi == countdown) {
            applet = new concurrency.CountDown();
        /* Chapter 3 */
        } else if (mi == threaddemo) {
            applet = new concurrency.ThreadDemo();
        /* Chapter 4 */
        } else if (mi == garden) {
            applet = new concurrency.garden.Garden();
        /* Chapter 5 */
        } else if (mi == carpark) {
            applet = new concurrency.carpark.CarPark();
        } else if (mi == semademo) {
            applet = new concurrency.semaphore.SemaDemo();
        } else if (mi == buffer) {
            applet = new concurrency.buffer.BoundedBuffer();
        } else if (mi == nestedmonitor) {
            applet = new concurrency.buffer.NestedMonitor();
        } else if (mi == fixednestedmonitor) {
            applet = new concurrency.buffer.FixedNestedMonitor();
        /* Chapter 6 */
        } else if (mi == diners) {
            stub.setParameter("Version","First");
            applet = new concurrency.diners.Diners();
        } else if (mi == fixeddiners) {
            stub.setParameter("Version","FIXED");
            applet = new concurrency.diners.Diners();
        /* Chapter 7 */
        } else if (mi == bridge) {
            applet = new concurrency.bridge.SingleLaneBridge();
        } else if (mi == readwrite){
            stub.setParameter("rwClass","ReadWriteSafe");
            applet = new concurrency.readwrite.ReadersWriters();
        } else if (mi == readwritepriority){
            stub.setParameter("rwClass","ReadWritePriority");
            applet = new concurrency.readwrite.ReadersWriters();
        } else if (mi == readwritefair){
            stub.setParameter("rwClass","ReadWriteFair");
            applet = new concurrency.readwrite.ReadersWriters();
        /* Chapter 8 */
        } else if (mi == fixedcruise) {
            stub.setParameter("fixed","TRUE");
            applet = new concurrency.cruise.CruiseControl();
        /* Chapter 9 */
        } else if (mi == golfclub){
            stub.setParameter("allocatorClass","SimpleAllocator");
            applet = new concurrency.golf.GolfClub();
        } else if (mi == golfclubfifo){
            stub.setParameter("allocatorClass","FairAllocator");
            applet = new concurrency.golf.GolfClub();
        } else if (mi == golfclubbounded){
            stub.setParameter("allocatorClass","BoundedOvertakingAllocator");
            applet = new concurrency.golf.GolfClub();
        } else if (mi == joindemo) {
            applet = new concurrency.JoinDemo();
        /* Chapter 10 */
        } else if (mi == syncmsg) {
            applet = new concurrency.message.SynchMsgDemo();
        } else if (mi == selmsg) {
            applet = new concurrency.message.SelectMsgDemo();
        } else if (mi == asyncmsg) {
            applet = new concurrency.message.AsynchMsgDemo();
        } else if (mi == rendezvous) {
            applet = new concurrency.message.EntryDemo();
        /* Chapter 11 */
        } else if (mi == primes) {
            applet= new concurrency.primes.Primes();
        } else if (mi == supwork) {
            applet= new concurrency.supwork.SupervisorWorker();
        } else if (mi == announce) {
            applet= new concurrency.announce.EventDemo();
        /* Chapter 12 */
        } else if (mi == parcel) {
            applet = new concurrency.parcel.ParcelRouter();
        } else if (mi == invaders) {
            applet = new concurrency.invaders.SpaceInvaders();
        } else if (mi == quit) {
            System.exit(0);
        }
        setTitle(mi.getLabel());
        add("Center",applet);
        applet.setStub(stub);
        applet.init();
        pack();
        show();
        applet.start();
    }

    public boolean action ( Event event, Object arg ) {
 		if (event.target instanceof MenuItem) {
		   MenuItem mi=(MenuItem)(event.target);
		   create(mi);
		}
		return true;
	}

    public boolean handleEvent ( Event event ) {
		if (event.id == Event.WINDOW_DESTROY) {
		     System.exit(0);
		}
		return super.handleEvent(event);
	}


  public static void main (String args[]) {
    Frame frame = new Viewer();
  }

}



class MyAppletStub implements AppletStub {

    Hashtable parameters = new Hashtable();
    AppletContext ac;

    MyAppletStub(AppletContext a) {
        ac = a;
    }


     public boolean isActive(){
        return true;
     }

     public URL getDocumentBase(){
        try {
            URL url = new URL("file", "", System.getProperty("java.home")
                      +java.io.File.separator+"classes"+java.io.File.separator);
            //System.out.println(url.toString());
            return url;
        } catch (java.net.MalformedURLException e) {
            return null;
        }
     }

     public URL getCodeBase(){
        return getDocumentBase();
     }

     public String getParameter(String name) {
        return (String)parameters.get(name);
     }

     public void setParameter(String name, String value) {
        parameters.put(name,value);
     }

     public AppletContext getAppletContext(){
        return ac ;
     }

    public void appletResize(int width, int height){
    }

}

class MyAppletContext implements AppletContext {

    public AudioClip getAudioClip(URL url) {
        return new MyAudioClip(url);
    }

    public Image getImage(URL url) {
      //System.out.println(url.toString());
      try {
        java.awt.image.ImageProducer prod = (java.awt.image.ImageProducer)url.getContent();
	    return Toolkit.getDefaultToolkit().createImage(prod);
	  } catch (java.io.IOException e) {
	    return null;
	  }
    }

    public Applet getApplet(String name) {return null;}
    public Enumeration getApplets() {return null;}
    public void showDocument(URL url){ }
    public void showDocument(URL url, String target) {}

    public void showStatus(String status){}
}


class MyAudioClip implements AudioClip {
     private AudioData data;
     private AudioDataStream stream;


     MyAudioClip(URL u) {
        try {
            AudioStream as= new AudioStream(u.openStream());
            data = as.getData();
        } catch (Exception ex) {
            System.out.println("Failed to get audio clip at: "+u);
        }
     }


     public void play(){
        try {
            stream = new AudioDataStream(data);
            AudioPlayer.player.start(stream);
        } catch (Exception ex) {
            System.out.println("Failed to play AudioClip:"+ex);
        }
     }

     public void loop(){ play();}

     public void stop(){
        try{
            if (stream!=null) {
                AudioPlayer.player.stop(stream);
                stream = null;
            }
        } catch(Exception ex) {
            System.out.println("Failed to stop AudioClip:"+ex);
        }
     }

}


class Initial extends Applet {

        String msg =
          "\n          EXAMPLE VIEWER\n\n" +
          "  A quick way of executing the demonstration\n"+
          "  applets from:\n\n"+
          "  Concurrency: State Models and Java Programs.\n\n"+
          "  Use the <Example> menu to select an example.\n\n"+
          "  For the instructions on running an example, \n"+
          "  use a Web brower by clicking on the button below.\n"+
          "  The examples will also run in the browser if it \n"+
          "  supports Java 1.1 or a later release.";

        Button browser;

        public void init() {
            setLayout(new BorderLayout());
            TextArea tx = new TextArea(msg,14,45,TextArea.SCROLLBARS_NONE);
            add("Center",tx);
            tx.setEditable(false);
            add("South",browser = new Button("Run examples in Web Browser"));
        }

        public boolean action ( Event event, Object arg ) {
		  if (event.target instanceof Button) {
		     try {
                 Runtime rt = Runtime.getRuntime();
                 String cmd[] = new String[3];
                 cmd[0] = "rundll32.exe";
                 cmd[1] = "url.dll,FileProtocolHandler";
                 cmd[2] = System.getProperty("java.home")+java.io.File.separator+"classes"
                                                   +java.io.File.separator+"concurrency.html";
                rt.exec(cmd);
            //outln(mfcom);
             } catch(java.io.IOException e) {}
		  }
		  return true;
	    }



}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -