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

📄 jmfapp-applet.html

📁 jmf指导文件参考资料
💻 HTML
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="GENERATOR" content="Quadralay WebWorks Publisher 5.0.2">
<meta name="TEMPLATEBASE" content="Portable HTML">
<meta name="LASTUPDATED" content="11/23/99 11:48:13">
<title>JMF Applet  </title>
</head>

<body link="#3366CC" vlink="#9999CC" text="#000000" alink="#0000CC" bgcolor="#FFFFFF"
background="images/backgrnd.gif">


<table width="100%" border="0" align="left" cellpadding="0" cellspacing="0">
  <tr>
    <td><a href="JMFTOC.html">CONTENTS</a> | 
    <a href="RTPExtending.html">PREV </a> |
    <a href="JMFApp-StateHelper.html">NEXT</a> |
    <a href="JMFIX.html">INDEX</a></td>
    <td align="right"><em>JMF 2.0 API Guide</em>
  </tr>
</table>

<p><br clear="all">
</p>

<hr align="left">

<blockquote>
<div align="right">
<a name="46909"> </a><font  size="3" face="Palatino, Times New Roman, Times, serif">A <br></font>
</div>
<div align="right">
<h2>
  <a name="84412"> </a><font color="#003366" face="Palatino, Times New Roman, Times, serif">JMF Applet</font>
</h2>
</div>

<p>
  <a name="81450"> </a><font face="Palatino, Times New Roman, Times, serif">This Java Applet demonstrates proper error checking in a Java Media program. Like <code>PlayerApplet</code>, it creates a simple media player with a media event listener. </font>
</p>


<p>
  <a name="81493"> </a><font face="Palatino, Times New Roman, Times, serif">When this applet is started, it immediately begins to play the media clip. When the end of media is reached, the clip replays from the beginning.</font>
</p>


<a name="84649"> </a><font  size="1" face="Palatino, Times New Roman, Times, serif">

<table border="1" bordercolorlight="#FFFFFF" bordercolordark="#000000"
       cellpadding="5" cellspacing="0">
  <caption><b><i><font face="Palatino, Times New Roman, Times, serif"><a name="84658"> </a>Example A-1:  TypicalPlayerApplet with error handling.  (1 of 5)</font></i></b></caption>
  <tr>
    <td><font face="Palatino, Times New Roman, Times, serif"><pre>
<a name="84668"> </a><code>import java.applet.Applet;
</code><a name="84669"> </a><code>import java.awt.*;
</code><a name="84670"> </a><code>import java.lang.String;
</code><a name="84671"> </a><code>import java.net.URL;
</code><a name="84672"> </a><code>import java.net.MalformedURLException;
</code><a name="84673"> </a><code>import java.io.IOException;
</code><a name="84674"> </a><code>import javax.media.*;
</code><a name="84675"> </a><code>
</code><a name="84676"> </a><code>/**
</code><a name="84677"> </a><code> * This is a Java Applet that demonstrates how to create a simple
</code><a name="84678"> </a><code> * media player with a media event listener.  It will play the
</code><a name="84679"> </a><code> * media clip right away and continuously loop.
</code><a name="84680"> </a><code> *
</code><a name="84681"> </a><code> * &lt;!-- Sample HTML 
</code><a name="84682"> </a><code> * &lt;applet code=TypicalPlayerApplet width=320 height=300&gt; 
</code><a name="84683"> </a><code> * &lt;param name=file value="Astrnmy.avi"&gt;
</code><a name="84684"> </a><code> * &lt;/applet&gt;
</code><a name="84700"> </a><code> * --&gt;
</code><a name="84701"> </a><code> */    
</code><a name="84702"> </a><code> 
</code><a name="84703"> </a><code>public class TypicalPlayerApplet extends Applet implements 
ControllerListener
</code><a name="84704"> </a><code>{
</code><a name="84705"> </a><code>   // media player    
</code><a name="84706"> </a><code>   Player player = null;  
</code></pre>
</font></td>
  </tr>
  <tr>
    <td><font face="Palatino, Times New Roman, Times, serif"><pre>
<a name="84749"> </a><code>   // component in which video is playing             
</code><a name="84750"> </a><code>   Component visualComponent  = null;   
</code><a name="84738"> </a><code>   // controls gain, position, start, stop
</code><a name="84730"> </a><code>   Component controlComponent = null;   
</code><a name="84731"> </a><code>   // displays progress during download
</code><a name="84732"> </a><code>   Component progressBar      = null;  
</code><a name="84756"> </a>    
<a name="84757"> </a>   /**
<a name="84758"> </a>    * Read the applet file parameter and create the media
<a name="84759"> </a>    * player.
<a name="84760"> </a>    */
<a name="84761"> </a>    
<a name="84762"> </a>   public void init() 
<a name="84763"> </a>   {
<a name="84764"> </a>      setLayout(new BorderLayout());
<a name="84765"> </a>      // input file name from html param
<a name="84766"> </a>      String mediaFile = null;        
<a name="84767"> </a>      // URL for our media file
<a name="84768"> </a>      URL url = null;  
<a name="84769"> </a>      // URL for doc containing applet               
<a name="84770"> </a>      URL codeBase = getDocumentBase();  
<a name="84771"> </a>
<a name="84772"> </a>      // Get the media filename info.
<a name="84773"> </a>      // The applet tag should contain the path to the
<a name="84774"> </a>      // source media file, relative to the html page.
<a name="84775"> </a>
<a name="84776"> </a>      if ((mediaFile = getParameter("FILE")) == null)
<a name="84777"> </a>         Fatal("Invalid media file parameter");
<a name="84783"> </a>      try 
<a name="84784"> </a>      {
<a name="84785"> </a>         // Create an url from the file name and the url to the 
<a name="84786"> </a>         // document containing this applet.
<a name="84787"> </a>
<a name="84788"> </a>         if ((url = new URL(codeBase, mediaFile)) == null)
<a name="84789"> </a>            Fatal("Can't build URL for " + mediaFile);
<a name="84790"> </a>
<a name="84791"> </a>         // Create an instance of a player for this media
<a name="84792"> </a>         if ((player = Manager.createPlayer(url)) == null)
<a name="84793"> </a>            Fatal("Could not create player for "+url);
<a name="84794"> </a>
<a name="84795"> </a>         // Add ourselves as a listener for player's events
<a name="84796"> </a>            player.addControllerListener(this);
<a name="84802"> </a>      } 
<a name="84803"> </a>      catch (MalformedURLException u) 
<a name="84804"> </a>      {
<a name="84805"> </a>         Fatal("Invalid media file URL!");
<a name="84806"> </a>      } 
</pre>
</font></td>
  </tr>
  <tr>
    <td><font face="Palatino, Times New Roman, Times, serif"><pre>
<a name="84814"> </a><code>      catch(IOException i) 
</code><a name="84815"> </a><code>      {
</code><a name="84816"> </a><code>         Fatal("IO exception creating player for "+url);
</code><a name="84817"> </a><code>      }
</code><a name="84818"> </a><code>
</code><a name="84819"> </a><code>      // This applet assumes that its start() calls  
</code><a name="84820"> </a><code>      // player.start().This causes the player to become
</code><a name="84821"> </a><code>      // Realized. Once Realized, the Applet will get
</code><a name="84822"> </a><code>      //  the visual and control panel components and add 
</code><a name="84823"> </a><code>      // them to the Applet.  These components are not added
</code><a name="84824"> </a><code>      // during init() because they are long operations that
</code><a name="84825"> </a><code>      // would make us appear unresposive to the user.
</code><a name="84826"> </a><code>   }
</code><a name="84827"> </a><code>
</code><a name="84828"> </a><code>   /**
</code><a name="84829"> </a><code>    * Start media file playback.  This function is called the 
</code><a name="84830"> </a><code>    * first time that the Applet runs and every
</code><a name="84831"> </a><code>    * time the user re-enters the page.
</code><a name="84832"> </a><code>    */    
</code><a name="84833"> </a><code>    
</code><a name="84834"> </a><code>   public void start() 
</code><a name="84835"> </a><code>   {
</code><a name="84836"> </a><code>      // Call start() to prefetch and start the player.
</code><a name="84837"> </a><code>      
</code><a name="84838"> </a><code>      if (player != null) player.start();
</code><a name="84839"> </a><code>   }
</code><a name="84840"> </a><code>
</code><a name="84841"> </a><code>   /**
</code><a name="84842"> </a><code>    * Stop media file playback and release resources before
</code><a name="84843"> </a><code>    * leaving the page.
</code><a name="84844"> </a><code>    */
</code><a name="84845"> </a><code>    
</code><a name="84846"> </a><code>   public void stop() 
</code><a name="84847"> </a><code>   {
</code><a name="84848"> </a><code>      if (player != null)
</code><a name="84849"> </a><code>      {
</code><a name="84850"> </a><code>         player.stop();
</code><a name="84851"> </a><code>         player.deallocate();
</code><a name="84852"> </a><code>      }
</code><a name="84853"> </a><code>   }
</code><a name="84859"> </a>
<a name="84860"> </a>   /**
<a name="84861"> </a>    * This controllerUpdate function must be defined in order
<a name="84862"> </a>    * to implement a ControllerListener interface.  This
<a name="84863"> </a>    * function will be called whenever there is a media event.
<a name="84864"> </a>    */
<a name="84865"> </a>    
<a name="84866"> </a>   public synchronized void controllerUpdate(ControllerEvent event) 
<a name="84872"> </a>   {
<a name="84878"> </a>      // If we're getting messages from a dead player, <code>
</code></pre>
</font></td>
  </tr>
  <tr>
    <td><font face="Palatino, Times New Roman, Times, serif"><pre>
<a name="84888"> </a>      // just leave
<a name="84889"> </a>      
<a name="84890"> </a>      if (player == null) return;
<a name="84891"> </a>
<a name="84892"> </a>      // When the player is Realized, get the visual
<a name="84893"> </a>      // and control components and add them to the Applet
<a name="84894"> </a>      
<a name="84895"> </a>      if (event instanceof RealizeCompleteEvent) 
<a name="84896"> </a>      {
<a name="84897"> </a>         if ((visualComponent = player.getVisualComponent()) != null)
<a name="84898"> </a>            add("Center", visualComponent);
<a name="84899"> </a>         if ((controlComponent = player.getControlPanelComponent()) != null)
<a name="84900"> </a>            add("South",controlComponent);
<a name="84901"> </a>            // force the applet to draw the components
<a name="84902"> </a>            validate();
<a name="84903"> </a>      }
<a name="84904"> </a>      else if (event instanceof CachingControlEvent) 
<a name="84905"> </a>      {
<a name="84906"> </a>
<a name="84907"> </a>         // Put a progress bar up when downloading starts,
<a name="84908"> </a>         // take it down when downloading ends.
<a name="84909"> </a>
<a name="84910"> </a>         CachingControlEvent  e = (CachingControlEvent) event;
<a name="84911"> </a>         CachingControl      cc = e.getCachingControl();
<a name="84912"> </a>         long cc_progress       = e.getContentProgress();
<a name="84913"> </a>         long cc_length         = cc.getContentLength(); 
<a name="84919"> </a>    
<a name="84920"> </a>         // Add the bar if not already there ...
<a name="84921"> </a>         
<a name="84922"> </a>         if (progressBar == null)  
<a name="84923"> </a>            if ((progressBar = cc.getProgressBarComponent()) != null) 
<a name="84924"> </a>            {
<a name="84925"> </a>               add("North", progressBar);
<a name="84926"> </a>               validate();
<a name="84927"> </a>            }
<a name="84928"> </a>    
<a name="84929"> </a>         // Remove bar when finished ownloading 
<a name="84930"> </a>         if (progressBar != null)  
<a name="84931"> </a>            if (cc_progress == cc_length) 
<a name="84932"> </a>            {
<a name="84933"> </a>               remove (progressBar);
<a name="84934"> </a>               progressBar = null;
<a name="84935"> </a>               validate();
<a name="84941"> </a>            }
<a name="84942"> </a>      }
<a name="84948"> </a>      else if (event instanceof EndOfMediaEvent) 
<a name="84949"> </a>      {
</pre>
</font></td>
  </tr>
  <tr>
    <td><font face="Palatino, Times New Roman, Times, serif"><pre>
<a name="84959"> </a>         // We've reached the end of the media; rewind and
<a name="84960"> </a>         // start over
<a name="84961"> </a>         
<a name="84962"> </a>         player.setMediaTime(new Time(0));
<a name="84963"> </a>         player.start();
<a name="84964"> </a>      }
<a name="84965"> </a>      else if (event instanceof ControllerErrorEvent) 
<a name="84966"> </a>      {
<a name="84967"> </a>         // Tell TypicalPlayerApplet.start() to call it a day
<a name="84968"> </a>         
<a name="84969"> </a>         player = null;
<a name="84970"> </a>         Fatal (((ControllerErrorEvent)event).getMessage());
<a name="84971"> </a>      }
<a name="84972"> </a>   }
<a name="84973"> </a>
<a name="84980"> </a>   void Fatal (String s) 
<a name="84981"> </a>   {
<a name="84982"> </a>     <code> // Applications will make various choices about what
</code><a name="84983"> </a><code>      // to do here.  We print a message and then exit
</code><a name="84984"> </a><code>      
</code><a name="84985"> </a><code>      System.err.println("FATAL ERROR: " + s);
</code><a name="84986"> </a><code>      throw new Error(s);  // Invoke the uncaught exception
</code><a name="84987"> </a><code>                           // handler System.exit() is another 
</code><a name="84988"> </a><code>                           // choice
</code><a name="84989"> </a><code>   }
</code><a name="84990"> </a><code>}</code>
</pre>
</font></td>
  </tr>
</table>



<br></font>
</blockquote>
<br clear="all">
<hr>
<a href="JMFTOC.html">CONTENTS</a> | 
<a href="RTPExtending.html">PREV </a> |
<a href="JMFApp-StateHelper.html">NEXT</a> |
<a href="JMFIX.html">INDEX</a></td>
<br>
<hr>
<em>
<a href="copyright.html">Copyright</a> &copy;
1998-1999 Sun Microsystems, Inc. All Rights Reserved.
</em>
</body>
</html>

⌨️ 快捷键说明

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