问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎么用Java写一个简单的mp3播放器,用外部包

发布网友 发布时间:2022-04-30 06:42

我来回答

1个回答

热心网友 时间:2023-10-19 22:29

作业其实还是自己写的好。要用到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 = 0; i < 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();
}

}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
办公软件综合实训图书信息 什么是高分子材料与工程高分子材料与工程介绍 抖音超市普通人怎么入驻 抖音上的超市怎么入驻的 胃胀,有时还有点痛:还嗝气请问吃什么药, ...喝水也吐经常嗝气吃东西就胃胀气经常胃酸有时候胃特别热烧心的感觉... 它是指示代词还是人称代词 指示代词和人称代词语文 汉语指示代词和人称代词区别 长款的牛仔衣如何搭配最出彩? 大庆火车站电话是什么 急求java教学视频的下载地址! 必加分谢! 北方稀土新手走势?北方稀土股票走势图线?北方稀土发行价和开盘价? 大庆西站火车站问事处电话是多少? 北方稀土下午走势?北方稀土股票未来走势图?北方稀土发行价多少钱? java 打开mp3文件 北方稀土的走势图如何? java编写 mp3播放器 代码 北方稀土下礼拜走势?北方稀土股票历史走势图?北方稀土发行股价多少? JAVA做音乐播放器简单吗 JAVA编写Mp3播放器 北方稀土股票走势图线 JAVA编写MP3播放器程序 北方稀土今天走势图给我看看 我想要MP3版的关于java和数据库的教程 北方稀土长期走势分析?2021年北方稀土的走势?北方稀土股发行价是多少? 北方稀土的走势图,600111的走势图 用JAVA做MP3播放器(有界面的哦)的教程 北方稀土股票行情走势图 北方稀土走势图解,600111走势图解 北方稀土股票后期走势预测图 谁知道大庆萨尔图火车站电话号码,急用! 宁波韵升以后走势如何?宁波韵升一个月走势图?宁波韵升股发行价多少? java教程视频下载 跪求大庆市萨尔图火车站咨询电话!! 今日北方稀土走势分析 谁有java教程,百度云下载,要从基础到精通。还要vs2008中文版下载 请问大庆火车站咨询电话是多少? 北方稀土一年走势?北方稀土全年股票走势图?北方稀土股多少价位可以建仓? 用Java如何得到mp3的属性 金力永磁股前景怎样?金力永磁是上市时价格?金力永磁的今日走势分析? 跪求毕向东25天javajava视频教程,在网上找到的解压之后都是音频,想要视频,谁有呢 大庆火车站办理宠物犬托运手续? Java语法视频教程免费下载 java写mp3播放器 【为什么大庆火车站的问事处电话打不通呢】 大庆火车站预订火车票电话号码是什么Y(^_^)Y 谁知道大庆火车站 应该提前几天买票 包头青山24小时药店地址? 包头24小时药店开门营业了东河