SWT+JMF亂真windows播放器

來源:互聯網
上載者:User

  SWT的最大好處是windows具有視窗風格,把SWT與JMF結合使用,windows的外框,java的播放器,你覺得我這個想法如何?


    如果你要運行My Code,你必須安裝JMF2.1.1e並且將swt的jar檔案匯入(記得要將swt-win32-2135.dll放在執行路徑下)


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

import javax.media.ConfigureCompleteEvent;
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.RealizeCompleteEvent;

import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.internal.awt.win32.SWT_AWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

/**
 * @author 
 * <a href="mailto:jdcyang@yahoo.com.cn">劉洋</a>
 * 2003-7-17 19:34:38
 */

public class SWTPlayer implements ControllerListener {

    public static void main(String[] args) {
        SWTPlayer sp = new SWTPlayer();
        sp.play();
    }
    private boolean configured =false;
    private boolean realized = false;
    Player player;
    Panel panel;
    public void play(){
        Display display = new Display ();
        Shell shell = new Shell(display,SWT.MAX);
        shell.setSize(320,240);
        shell.setText("你好SWT");
        panel = SWT_AWT.new_Panel(shell);
        URL url = null;
        try {
            url = new URL("file:/D:/video/jboss.mpeg");
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }        
        try {
            player = Manager.createPlayer(url);
        } catch (NoPlayerException e1) {
            e1.printStackTrace();
        } catch (IOException e1) {
            e1.printStackTrace();
        }

        player.addControllerListener(this);
            
        player.realize();
        while (! realized) {
            try {
                Thread.sleep(100L);;
            } catch (InterruptedException e) {
            // ignore
            }
        }        
        panel.setLayout(new BorderLayout());
        panel.add(player.getVisualComponent(),BorderLayout.CENTER);
        Component cpc =  player.getControlPanelComponent();
        if (cpc != null) {
            panel.add(cpc,BorderLayout.SOUTH);
        } else {

        }        
        player.start();        
    
        shell.open ();
        Window win;
    
        while (!shell.isDisposed ()) {
            if (!display.readAndDispatch ()) display.sleep ();
        }
        display.dispose ();    
    }
    /* (non-Javadoc)
     * @see javax.media.ControllerListener#controllerUpdate(javax.media.ControllerEvent)
     */

    public void controllerUpdate(ControllerEvent evt) {
        if (evt instanceof RealizeCompleteEvent) {
            realized = true;
        } else     if (evt instanceof ConfigureCompleteEvent) {
            configured = true;
        } else if (evt instanceof EndOfMediaEvent) {
        } else {
        }        
    }
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.