import javax.media.*
import java.io.IOException
import java.util.ArrayList
import java.util.List
public class PlayerMusic implements ControllerListener {// ControllerListener
// 控制事件
private Player player
private boolean first, loop
private String path
private List mp3List
private int mp3NO = 0
PlayerMusic(List mp3List) {
this.mp3List = mp3List
}
public void start() {
try {
player = Manager.createPlayer(new MediaLocator("file://" + mp3List.get(mp3NO)))
} catch (NoPlayerException ex) {
ex.printStackTrace()
System.out.println("不能播放文件")
return
} catch (IOException ex) {
ex.printStackTrace()
return
}
if (player == null) {
System.out.println("播放器为空")
return
}
first = false
player.addControllerListener(this)
// 提取媒体内容
player.prefetch()
}
public void controllerUpdate(ControllerEvent e) {
// 当媒体播放结束时,循环播放
if (e instanceof EndOfMediaEvent) {
mp3NO++
if(mp3NO<this.mp3List.size()){
this.start()
}
return
}
// 当预提取媒体的内容结束
if (e instanceof PrefetchCompleteEvent) {
player.start()
return
}
// 当实例化后
if (e instanceof RealizeCompleteEvent) {
// pack()//执行pack()操作
return
}
}
public static void main(String[] args) {
List mp3List = new ArrayList()
mp3List.add("d://a.mp3")
mp3List.add("d://b.mp3")
mp3List.add("d://c.mp3")
PlayerMusic pm = new PlayerMusic(mp3List)
pm.start()
}
}
作业其实还是自己写的好。要用到JMF包啊,到网上下载一个JMF包,照着说明安装上。以下是我写的一个很简单的播放器,只能播放mp3,mpeg,mpg,wav等简单的格式。
import java.awt.*
import java.awt.event.ActionEvent
import java.awt.event.ActionListener
import java.awt.event.WindowAdapter
import java.awt.event.WindowEvent
import javax.media.ControllerEvent
import javax.media.ControllerListener
import javax.media.MediaLocator
import javax.media.RealizeCompleteEvent
import javax.media.bean.playerbean.MediaPlayer
import javax.swing.JPanel
import javax.swing.JFrame
import javax.swing.SwingUtilities
import javax.swing.JList
import java.awt.BorderLayout
import javax.swing.JSplitPane
import java.awt.Component
import java.util.Vector
public class JMF_T extends JFrame implements ControllerListener, ActionListener {
MediaPlayer Player
private String filename = ""
private static final long serialVersionUID = 1L
private Vector vct = new Vector()// @jve:decl-index=0:
private JPanel jContentPane = null
private JSplitPane jSplitPane = null
private JPanel playPanel = null
private JList jList = null
private JSplitPane getJSplitPane() {
if (jSplitPane == null) {
jSplitPane = new JSplitPane()
jSplitPane.setDividerSize(5)
jSplitPane.setResizeWeight(0.8)
jSplitPane.setRightComponent(getJList())
jSplitPane.setLeftComponent(getPlayPanel())
}
return jSplitPane
}
private JPanel getPlayPanel() {
if (playPanel == null) {
playPanel = new JPanel()
playPanel.setLayout(new BorderLayout())
}
return playPanel
}
private JList getJList() {
if (jList == null) {
jList = new JList()
jList.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent e) {
// TODO Auto-generated Event stub mouseClicked()
if (e.getClickCount() == 1) {
String str = (String) jList.getSelectedValue()
if (str == null) {
return
}
filename = str
System.out.println(str)
}
if (e.getClickCount() == 2) {
String str = (String) jList.getSelectedValue()
if (str == null) {
return
}
filename = str
play()
}
}
})
}
return jList
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JMF_T thisClass = new JMF_T()
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
thisClass.setVisible(true)
}
})
}
public JMF_T() {
initialize()
}
private void OpenFile() {
FileDialog fd = new FileDialog(this, "Choose Video", FileDialog.LOAD)
fd.setVisible(true)
filename = fd.getDirectory() + fd.getFile()
System.out.println(filename)
if (filename.equals("")) {
return
} else if (filename.equals("nullnull")) {
return
}
boolean j = false
for (int i = 0i <vct.size()i++) {
if (vct.get(i).toString().equals(filename)) {
j = true
break
}
}
if (j == false) {
vct.add(filename)
jList.setListData(vct)
}
}
private void stop() {
if (Player != null) {
Player.stop()
Player.deallocate()
}
}
private void play() {
try {
if (filename.equals("")) {
return
}
if (Player == null) {
Player = new MediaPlayer()
} else {
closePreviosPlayer()
}
Player.setMediaLocator(new MediaLocator("file:///" + filename))
Player.addControllerListener(this)
Player.realize()
Player.start()
} catch (Exception e) {
}
}
public void actionPerformed(ActionEvent e) {
String action = e.getActionCommand().toString()
if (action.equals("Open")) {
OpenFile()
}
if (action.equals("Play")) {
play()
}
if (action.equals("Stop")) {
stop()
}
if (action.equals("Exit")) {
dispose()
System.exit(0)
}
}
private void initialize() {
this.setSize(500, 350)
setLocation(300, 100)
this.setContentPane(getJContentPane())
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose()
System.exit(0)
}
})
MenuBar mb = new MenuBar()
setMenuBar(mb)
Menu fileMenu = new Menu("File")
Menu actMenu = new Menu("Action")
mb.add(fileMenu)
mb.add(actMenu)
MenuItem itemOpen = new MenuItem("Open")
itemOpen.addActionListener(this)
fileMenu.add(itemOpen)
fileMenu.addSeparator()
MenuItem itemPlay = new MenuItem("Play")
itemPlay.addActionListener(this)
actMenu.add(itemPlay)
actMenu.addSeparator()
MenuItem itemStop = new MenuItem("Stop")
itemStop.addActionListener(this)
actMenu.add(itemStop)
MenuItem itemExit = new MenuItem("Exit")
itemExit.addActionListener(this)
fileMenu.add(itemExit)
this.validate()
this.setVisible(true)
}
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel()
jContentPane.setLayout(new BorderLayout())
jContentPane.add(getJSplitPane(), BorderLayout.CENTER)
}
return jContentPane
}
private void closePreviosPlayer() {
if (Player == null)
return
Player.stop()
Player.deallocate()// 停止播放并且重新装载DateSource
Component visual = Player.getVisualComponent()
Component control = Player.getControlPanelComponent()
if (visual != null) {
playPanel.remove(visual)
}
if (control != null) {
playPanel.remove(control)
}
}
public synchronized void controllerUpdate(ControllerEvent event) {
if (event instanceof RealizeCompleteEvent) {
Component comp
if ((comp = Player.getControlPanelComponent()) != null) {
playPanel.add("South", comp)
} else {
closePreviosPlayer()
}
if ((comp = Player.getVisualComponent()) != null) {
playPanel.add("Center", comp)
}
validate()
}
}
}