⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mediaplayer.java

📁 java语言实现的mp3播放与心电图的模拟程序
💻 JAVA
字号:
package mp3_test2;

import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.io.IOException;
import java.net.URL;

import javax.media.CannotRealizeException;
import javax.media.Manager;
import javax.media.NoPlayerException;
import javax.media.Player;
import javax.swing.*;
import javax.swing.border.*;
import java.util.*;
public class MediaPlayer extends JFrame implements ActionListener{
	public Thread thread;
	JTabbedPane tabbedPane = new JTabbedPane();
	private JList fileList = new JList();
	private JScrollPane scrollPane; 
	private JButton b1,b2,b3,b4,b21,b22,b23,heart_jumping,bh1,bh2,heart;
	private JTextField rate_txt;
	private JPanel p1,p2,p3,ph,ph1,pr,panel2,rollpanel;
	private JLabel rate_label,name;
	public static JLabel heart_rate_label; 
	private Container c;
	private JTabbedPane card;
	private DefaultListModel listModel=new DefaultListModel(); 
	private static DrawPanel draw_rate;
	private int from= 20,to;
	private int[] height=new int[20];
	private int color;
	public Func ff;
	private String currentDirectory, filename=" ",filepath=" ";
	private static Player player = null;
	private static File audioFile;
	JButton[] jb=new JButton[7];
	JTextField jt=new JTextField(5);
	int rate=120;
	int state=0;
	public MediaPlayer(){
		name=new JLabel();
		 Container content=getContentPane();
		  content.setLayout(new BorderLayout());
		  JPanel r1=new JPanel();
		  JPanel r2=new JPanel();
		  JPanel r3=new JPanel();
		  jt.setText("120");
		  draw_rate=new DrawPanel();
	        draw_rate.stopsong();
	        r1.add(draw_rate);
	        ff=new Func();
	        tabbedPane.add(r1,"mp3");
			  tabbedPane.add(ff,"心脏监视");
			 content.add(tabbedPane,BorderLayout.WEST);
		  JPanel menu=new JPanel();
		  menu.setLayout(new GridLayout(5,1));
		  JPanel[] ap=new JPanel[5];
		  JLabel jl=new JLabel("bps");
		  for(int i=0;i<5;i++)
			  ap[i]=new JPanel();
		  for(int i=0;i<7;i++)
			  jb[i]=new JButton();
		  rollpanel=new JPanel();
		  jb[0].setActionCommand("reduce");
		  jb[0].setText("<<");
		  jb[1].setActionCommand("set");
		  jb[1].setText("Set");
		  jb[2].setActionCommand("increase");
		  jb[2].setText(">>");
		  jb[3].setActionCommand("start");
		  jb[3].setText("start");
		  jb[4].setActionCommand("stop");
		  jb[4].setText("stop");
		  jb[5].setActionCommand("quit");
		  jb[5].setText("quit");
		  jb[6].setActionCommand("file");
		  jb[6].setText("file");
		  for(int i=0;i<7;i++)
			  jb[i].addActionListener(this);
		  ap[0].add(jt);
		  ap[0].add(jl);
		  ap[1].add(jb[0]);
		  ap[1].add(jb[1]);
		  ap[1].add(jb[2]);
		  ap[3].add(new JLabel(" "));
		  ap[4].add(jb[3]);
		  ap[4].add(jb[4]);
		  ap[4].add(jb[5]);
		  ap[4].add(jb[6]);
		  rollpanel.add(name);
			  menu.add(ap[0]);
			  menu.add(ap[1]);
			  menu.add(rollpanel);
			  menu.add(ap[3]);
			  menu.add(ap[4]);
		  menu.setBorder(new TitledBorder("菜单项"));
		  content.add(menu,BorderLayout.EAST);
		  addWindowListener (new WindowAdapter () 
		  { 
		  public void windowClosing (WindowEvent e) 
		  { 
		  System.exit(0); } });
	}
	public void setRate(int r){
		player.setRate((float)(r/120.0));
	}
public void actionPerformed(ActionEvent e){
	String command=e.getActionCommand();
	rate=Integer.parseInt(jt.getText());
	if(command.equals("set")){
setRate(rate);
	}else if(command.equals("reduce")){
		rate --;
		setRate(rate);
		jt.setText(Integer.toString(rate));
		}
	else if(command.equals("increase")){
		rate ++;
		setRate(rate);
		jt.setText(Integer.toString(rate));
	}
	else if(command.equals("start")){
		try{
			if(player!=null)
			{player.start();draw_rate.startsong();
}
		else
			{
			audioFile= new File(filepath);
			player=Manager.createRealizedPlayer(tourl(audioFile));
			player.start();
			draw_rate.startsong();
			}
		}catch(Exception e1){System.out.println("error1");}
	}
	else if(command.equals("stop")){
		try{
			player.stop();		draw_rate.stopsong();
		}catch(Exception e1){System.out.println("error2");}
	}
	else if(command.equals("quit")){
		try{
			player.close();	
			audioFile= new File(filepath);
			player=Manager.createRealizedPlayer(tourl(audioFile));
		}catch(Exception e1){System.out.println("error2");}
		draw_rate.stopsong();
		//name.setText(" ");
	}
	else if(command.equals("file")){
		/*if(player!=null)
		{player.close();
		draw_rate.stopsong();	
		}*/
	FileDialog fd = new FileDialog(this, "打开媒体文件", FileDialog.LOAD);
	fd.setDirectory(currentDirectory);
	fd.show();
	if (fd.getFile() == null)
		return;
	filename = fd.getFile();
	currentDirectory = fd.getDirectory();
	filepath = currentDirectory + filename;
	try{audioFile= new File(filepath);
	player.close();
	player=Manager.createRealizedPlayer(tourl(audioFile));
	player.start();
	draw_rate.startsong();
	}catch(Exception e1){System.out.println("error1");}
	name.setText(filename);
	}
}
public static URL tourl(File file) throws IOException,NoPlayerException,CannotRealizeException
{
	return file.toURL();
	}
class DrawPanel extends JPanel implements Runnable{ 
	double c; 
	Thread thread; 
	boolean isStopped; 
	int inner_blank_height=9;
	public DrawPanel() {  
		c=0.0; 
		this.setPreferredSize(new Dimension(200,300)); 
		(thread=new Thread(this)).start(); 
		this.setBackground(Color.black);
	} 
	public void paint(Graphics g) { 
		g.clearRect(0,0,getSize().width,getSize().height); //清空面板

      for(int x=0;x<to-20;x+=13)
{			    	
switch(color){
	case 0:g.setColor(Color.LIGHT_GRAY);
	        break;
	case 1:g.setColor(Color.cyan);
             break;        
	case 2:g.setColor(Color.yellow);
             break;        
	case 3:g.setColor(Color.blue);
             break;       
	case 4:g.setColor(Color.red);
             break; 
	case 5:g.setColor(Color.magenta);
    	break; 
	case 6:g.setColor(Color.ORANGE);
		break; 
	case 7:g.setColor(Color.PINK);
    	break; 
	case 8:g.setColor(Color.green);
    	break; 
	}
	for (int y=150 ; y >150-height[x/13] ; y-=7)
	{g.fillRect(from+x, 30+y, 10, 5); }
	g.setColor(Color.white);
	g.fillRect(from+x, 150-height[x/13]+inner_blank_height, 10, 5); 
	g.setColor(Color.BLUE);
	g.fillRect(from+x+1, 150-height[x/13]+1+inner_blank_height, 8, 3);
			}
	} 
	public void run() { 
		while(true){
			repaint(); 
			if(!isStopped) 
				{to=this.getWidth()-20;
				for(int i=0;i<20;i++)
					height[i]=(int)(Math.random()*100);
					color=(int)(Math.random()*9);
					inner_blank_height=(int)(Math.random()*15+10);}
			try{

				thread.sleep((int)(500*120/rate)); 
			}catch (InterruptedException ex){ex.printStackTrace();} 
		} 
	} 
	public void stopsong()
	{
		isStopped=true;
	}
	public void startsong()
	{
		isStopped=false;
	}
}
public static void main(String[] args){
	MediaPlayer tf=new MediaPlayer();
	Toolkit   tk=tf.getToolkit();   
	  Dimension   screenSize=tk.getScreenSize();  
	  int   frameWidth=500;   
	  int   frameHeight=300;   
	  tf.setBounds((screenSize.width-frameWidth)/2,(screenSize.height-frameHeight)/2,frameWidth,frameHeight);   
	tf.setVisible(true);
	audioFile= new File("F://MUSIC//魔兽亡灵序曲.mp3");
	try{
		player = Manager.createRealizedPlayer(tourl(audioFile));
	}catch(Exception e1){System.out.println("error");}

}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -