當前位置:編程學習大全網 - 源碼下載 - Java播放器源代碼。

Java播放器源代碼。

import javax.media.*;

import java.awt.*;

import java.awt.event.*;

class MediaPlayer extends Frame implements ActionListener,

ControllerListener, ItemListener

{

Player player;

Component vc, cc;

boolean first = true, loop = false;

String currentDirectory;

MediaPlayer (String title)

{

super (title);

addWindowListener

(new WindowAdapter ()

{

public void windowClosing (WindowEvent e) {

// 用戶點擊窗口系統菜單的關閉按鈕

// 調用dispose以執行windowClosed

dispose ();

} public void windowClosed (WindowEvent e) {

if (player != null) player.close ();

System.exit (0);

}

});

Menu m = new Menu ("文件");

MenuItem mi = new MenuItem ("打開");

mi.addActionListener (this);

m.add (mi);

m.addSeparator ();

CheckboxMenuItem cbmi = new CheckboxMenuItem ("循環", false);

cbmi.addItemListener (this);

m.add (cbmi);

m.addSeparator ();

mi = new MenuItem ("退出");

mi.addActionListener (this);

m.add (mi);

MenuBar mb = new MenuBar ();

mb.add (m);

setMenuBar (mb);

setSize (200, 200);

setVisible (true);

}

public void actionPerformed (ActionEvent e)

{

if (e.getActionCommand ().equals ("退出"))

{

// 調用dispose以便執行windowClosed

dispose ();

return;

}

FileDialog fd = new FileDialog (this, "打開媒體文件",

FileDialog.LOAD);

fd.setDirectory (currentDirectory);

fd.show ();

// 如果用戶放棄選擇文件,則返回

if (fd.getFile () == null) return;

currentDirectory = fd.getDirectory ();

if (player != null)

player.close ();

try

{

player = Manager.createPlayer (new MediaLocator ("file:" + fd.getDirectory () + fd.getFile ()));

}

catch (java.io.IOException e2)

{

System.out.println (e2);

return;

}

catch (NoPlayerException e2)

{

System.out.println ("不能找到播放器.");

return;

}

if (player == null)

{

System.out.println ("無法創建播放器.");

return;

}

first = false;

setTitle (fd.getFile ());

player.addControllerListener (this);

player.prefetch ();

}

public void controllerUpdate (ControllerEvent e)

{

// 調用player.close()時ControllerClosedEvent事件出現。

// 如果存在視覺部件,則該部件應該拆除(為壹致起見,

// 我們對控制面板部件也執行同樣的操作)

if (e instanceof ControllerClosedEvent)

{

if (vc != null)

{

remove (vc);

vc = null;

}

if (cc != null)

{

remove (cc);

cc = null;

}

return;

}

if (e instanceof EndOfMediaEvent)

{

if (loop)

{

player.setMediaTime (new Time (0));

player.start ();

}

return;

}

if (e instanceof PrefetchCompleteEvent)

{

player.start ();

return;

}

if (e instanceof RealizeCompleteEvent)

{

vc = player.getVisualComponent ();

if (vc != null)

add (vc);

cc = player.getControlPanelComponent ();

if (cc != null)

add (cc, BorderLayout.SOUTH);

pack ();

}

}

public void itemStateChanged (ItemEvent e)

{

loop = !loop;

}

public void paint (Graphics g)

{

if (first)

{

int w = getSize ().width;

int h = getSize ().height;

g.setColor (Color.blue);

g.fillRect (0, 0, w, h);

Font f = new Font ("DialogInput", Font.BOLD, 16);

g.setFont (f);

FontMetrics fm = g.getFontMetrics ();

int swidth = fm.stringWidth ("*** 歡迎 ***");

g.setColor (Color.white);

g.drawString ("*** 歡迎 ***",

(w - swidth) / 2,

(h + getInsets ().top) / 2);

}

// 調用超類Frame的paint()方法,該paint()方法將調用Frame包含的各個容器

// 和部件(包括控制面板部件)的paint()方法。

super.paint (g);

}

// 不執行背景清除操作,以免控制面板部件閃爍

public void update (Graphics g)

{

paint (g);

}

public static void main (String [] args) {

new MediaPlayer ("媒體播放器1.0");

} }

  • 上一篇:在線客服系統對接平臺有哪些
  • 下一篇:safemon0.sys是個什麽木馬
  • copyright 2024編程學習大全網