📄 mediaplayer.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 + -