用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

java midi音乐文件播放器

2012-09-14 作者: 神马举报

[java]代码库

import javax.swing.*;
import javax.sound.midi.*;
import java.awt.GridLayout;
import java.io.File;

public class MidiPlayer extends JFrame {
	@SuppressWarnings("deprecation")
	MidiPlayer(String song) {
		super(song);
		setSize(300, 150);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		MidiPanel midi = new MidiPanel(song);
		JPanel pane = new JPanel();
		pane.add(midi);
		setContentPane(pane);
		show();
	}

	public static void main(String[] arguments) {

		MidiPlayer pm = new MidiPlayer("c:\\1.midi"); // midi文件

	}
}

class MidiPanel extends JPanel implements Runnable {
	Thread runner;
	JProgressBar progress = new JProgressBar();
	Sequence currentSound;// 音序
	Sequencer player;// 默认音序器
	String songFile;// 歌曲

	MidiPanel(String song) {
		super();
		songFile = song;
		JLabel label = new JLabel("Playing file...");
		setLayout(new GridLayout(2, 1));
		add(label);
		add(progress);
		if (runner == null) {
			runner = new Thread(this);
			runner.start();
		}
	}

	public void run() {

		try {

			System.out.println(songFile);
			File file = new File(songFile);

			currentSound = MidiSystem.getSequence(file);// 获取音序文件
			player = MidiSystem.getSequencer();// 获取音序器
			player.open();
			player.setSequence(currentSound);// 设置音序器播放指定音乐文件

			progress.setMinimum(0);
			progress.setMaximum((int) player.getMicrosecondLength());// 设置最大位歌曲时间

			player.start();
			while (player.isRunning()) {
				progress.setValue((int) player.getMicrosecondPosition());// 设置播放文件显示当前播放进度
				try {
					Thread.sleep(1000);
				} catch (Exception e) {
					// TODO: handle exception
				}
			}
			player.close();
		} catch (Exception e) {
			// TODO: handle exception
		}
	}

}

[代码运行效果截图]


java midi音乐文件播放器


网友评论    (发表评论)

共1 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...