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

📄 jmfsample.java

📁 java界面例子java界面例子java界面例子
💻 JAVA
字号:
package com.Implment;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Panel;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.EndOfMediaEvent;
import javax.media.Manager;
import javax.media.NoPlayerException;
import javax.media.Player;
import javax.media.PrefetchCompleteEvent;
import javax.media.RealizeCompleteEvent;
import javax.media.Time;
import javax.swing.JPanel;

public class JMFSample extends JPanel implements ControllerListener {
    public static void main(String[] args) {
        //JMFSample sp = new JMFSample();
        //sp.play();
    }
   
    private URL url;
    private File file;
    private Player player;
    //private Panel panel;
    private Component visual;
    private Component control = null;
   
    
    public JMFSample(File file){
    	this.setLayout(new BorderLayout());
    	
    	try {
			url = file.toURL();
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    	
    	
    	this.setSize(500,400);
    	this.setBackground(Color.BLACK);
    	//this.setVisible(true);
    	
    	
    }
    
    
    
    public void play(){

        try {
            //通过调用Manager的createPlayer方法来创建一个Player的对象
            //这个对象是媒体播放的核心控制对象
        	//System.out.println(url.getPath());
            player = Manager.createPlayer(url);
        } catch (NoPlayerException e1) {
            e1.printStackTrace();
        } catch (IOException e1) {
            e1.printStackTrace();
        }

        //对player对象注册监听器,能噶偶在相关事件发生的时候执行相关的动作
        player.addControllerListener(this);
       
        //让player对象进行相关的资源分配
        player.realize();
    }
   
    private int videoWidth = 0;
    private int videoHeight = 0;
    private int controlHeight = 30;
    private int insetWidth = 10;
    private int insetHeight = 30;
   
    //监听player的相关事件
    public void controllerUpdate(ControllerEvent ce) {
        if (ce instanceof RealizeCompleteEvent) {
            //player实例化完成后进行player播放前预处理
            player.prefetch();
        } else if (ce instanceof PrefetchCompleteEvent) {
            if (visual != null)
                return;

            //取得player中的播放视频的组件,并得到视频窗口的大小
            //然后把视频窗口的组件添加到Frame窗口中,
            if ((visual = player.getVisualComponent()) != null) {
                Dimension size = visual.getPreferredSize();
                videoWidth = size.width;
                videoHeight = size.height;
                this.add(visual);
            } else {
                videoWidth = 320;
            }
           
            //取得player中的视频播放控制条组件,并把该组件添加到Frame窗口中
            if ((control = player.getControlPanelComponent()) != null) {
                controlHeight = control.getPreferredSize().height;
                this.add(control, BorderLayout.SOUTH);
            }
           
            //设定Frame窗口的大小,使得满足视频文件的默认大小
            this.setSize(videoWidth + insetWidth, videoHeight + controlHeight + insetHeight);
            this.validate();
           
            //启动视频播放组件开始播放
            player.start();
        } else if (ce instanceof EndOfMediaEvent) {
            //当播放视频完成后,把时间进度条恢复到开始,并再次重新开始播放
            player.setMediaTime(new Time(0));
            player.start();
        }
    }

}

⌨️ 快捷键说明

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