您的位置:首页 > 编程语言 > Java开发

java midi音乐文件播放器

2012-09-15 01:00 176 查看
源码:http://yuncode.net/code/c_5052c1fddaa6538





01 import javax.swing.*;

02 import javax.sound.midi.*;

03 import java.awt.GridLayout;

04 import java.io.File;

05

06 public class MidiPlayer extends JFrame {

07     @SuppressWarnings("deprecation")

08     MidiPlayer(String song) {

09         super(song);

10         setSize(300, 150);

11         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

12         MidiPanel midi = new MidiPanel(song);

13         JPanel pane = new JPanel();

14         pane.add(midi);

15         setContentPane(pane);

16         show();

17     }

18

19     public static void main(String[] arguments) {

20

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

22

23     }

24 }

25

26 class MidiPanel extends JPanel implements Runnable {

27     Thread runner;

28     JProgressBar progress = new JProgressBar();

29     Sequence currentSound;// 音序

30     Sequencer player;// 默认音序器

31     String songFile;// 歌曲

32

33     MidiPanel(String song) {

34         super();

35         songFile = song;

36         JLabel label = new JLabel("Playing file...");

37         setLayout(new GridLayout(2, 1));

38         add(label);

39         add(progress);

40         if (runner == null) {

41             runner = new Thread(this);

42             runner.start();

43         }

44     }

45

46     public void run() {

47

48         try {

49

50             System.out.println(songFile);

51             File file = new File(songFile);

52

53             currentSound = MidiSystem.getSequence(file);// 获取音序文件

54             player = MidiSystem.getSequencer();// 获取音序器

55             player.open();

56             player.setSequence(currentSound);// 设置音序器播放指定音乐文件

57

58             progress.setMinimum(0);

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

60

61             player.start();

62             while (player.isRunning()) {

63                 progress.setValue((int) player.getMicrosecondPosition());// 设置播放文件显示当前播放进度

64                 try {

65                     Thread.sleep(1000);

66                 } catch (Exception e) {

67                     // TODO: handle exception

68                 }

69             }

70             player.close();

71         } catch (Exception e) {

72             // TODO: handle exception

73         }

74     }

75

76 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: