java制作mp3_[求助]用java制作一播放MP3播放的程序

import javax.media.*;

import javax.media.bean.playerbean.*;

import javax.swing.UIManager;

import java.awt.*;

import java.awt.event.*;

class MediaPlayer extends Frame implements ActionListener, ControllerListener,

ItemListener {

private static final long serialVersionUID = 1L;

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);

}

});

try {

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

} catch (Exception e) {

e.printStackTrace();

}

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");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值