忙了一个星期,终于能信心满满的放出第一版本sundayplayer音乐播放器,修复了之前存在的各种bug,虽然本来该加的进度条拖后了,不过也是因为不想用java的swing的进度条,打算重写一个更加漂亮的进度条。按照我的惯例,开放源代码,不过估计没人会有兴趣,不管了,放上去再说,等有心人。
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.util.Vector;
import javax.swing.DefaultListModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.media.Time;
import javax.media.bean.playerbean.*;
public class musicplayer {
public static void main(String[] args) {
new first("Sunday player");
}
}
class first extends JFrame implements MouseListener{
static int playpress=1;
static int listshowpress=1;
public Vector name,lujin;
String fileName[];
String wenjian;
File[] fd;
int current=0;
public MediaPlayer sound;
JList list;
public first(String title){
setVisible(true);//窗口可视
setDefaultCloseOperation(EXIT_ON_CLOSE);//点×结束进程
setBounds(200,20,300,700);//设置位置以及大小
setTitle(title);//设置标题
sound=new MediaPlayer();
name=new Vector();
lujin=new Vector();
GridLayout listlayout=new GridLayout(1,1);
GridLayout layout=new GridLayout(1,1);
GridLayout labellayout=new GridLayout(10,1);
ImagePanel jp=new ImagePanel();//重写的imaginepanel,可以加背景图
final JPanel listUI=new JPanel();//列表所在的容器
final JPanel labelUI=new JPanel();//列表左边的容器
final JPanel playUI=new JPanel();//播放器容器
playUI.setOpaque(false);//播放器的容器透明
//labelUI.setOpaque(false);
listUI.setOpaque(false);//列表容器透明
labelUI.setBackground(Color.gray);//列表左边的容器颜色为灰
playUI.setBounds(-5,-20,300,170);//播放器在底部容器里的位置
listUI.setBounds(5,150,280,510);//列表在底部容器里的初始位置
labelUI.setBounds(-45,150,50,510);//列表左边容器在底部容器里的初始位置(缩入)
this.setLayout(layout);//JFram为gridlayout布局(1,1)
playUI.setLayout(null); //播放器所在容器自由布局
jp.setLayout(null);//底部容器自由布局
listUI.setLayout(listlayout);//播放器所在容器gridlayout布局(1,1)
labelUI.setLayout(labellayout);//列表左部所在容器gridlayout布局(1,1)
final JButton firstlist=new JButton(new ImageIcon("image/icon/playlist1.png"));
final JButton list1=new JButton(new ImageIcon("image/icon/playlist1.png"));
final JButton list2=new JButton(new ImageIcon("image/icon/playlist1.png"));
final JButton list3=new JButton(new ImageIcon("image/icon/playlist1.png"));
//列表左边的四个按钮
firstlist.setContentAreaFilled(false);
list1.setContentAreaFilled(false);
list2.setContentAreaFilled(false);
list3.setContentAreaFilled(false);
//列表左边四个按钮背景透明
labelUI.add(firstlist);
labelUI.add(list1);
labelUI.add(list2);
labelUI.add(list3);
//列表左边容器添加四个按钮
final JButton play=new JButton(new ImageIcon("image/icon/play.png"));
final JButton next=new JButton(new ImageIcon("image/icon/next.png"));
final JButton before=new JButton(new ImageIcon("image/icon/before.png"));
final JButton stop=new JButton(new ImageIcon("image/icon/stop.png"));
//播放器的四个按钮
final JButton listshow=new JButton(new ImageIcon("image/icon/up.png"));
final JButton add=new JButton(new ImageIcon("image/icon/add.png"));
//上下拉按钮和添加按钮
play.setContentAreaFilled(false);
next.setContentAreaFilled(false);
before.setContentAreaFilled(false);
stop.setContentAreaFilled(false);
//播放器四个按钮背景透明
play.setBorder(null);
next.setBorder(null);
before.setBorder(null);
stop.setBorder(null);
//播放器四个按钮无边框
playUI.add(next);
playUI.add(play);
playUI.add(before);
playUI.add(stop);
playUI.add(listshow);
playUI.add(add);
//播放器容器添加四个按钮
play.setBounds(115,50,60,60);
next.setBounds(200,60,40,40);
before.setBounds(50,60,40,40);
stop.setBounds(165,95,30,30);
//播放器四个按钮所在位置
listshow.setBounds(270,155,15,11);//上下拉按钮在播放器容器中的位置
listshow.setContentAreaFilled(false);//上下拉无背景
listshow.setBorder(null);//上下拉添加按钮无边框
add.setBounds(10,155,15,15);//添加按钮在播放器容器中的位置
add.setContentAreaFilled(false);//无背景
add.setBorder(null);//添加按钮无边框
list = new JList(lujin);
try{
new read();
list.setListData(name);
}catch (Exception e) {
}
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.setBorder(null);
JScrollPane js=new JScrollPane(list);
js.setBorder(null);
js.setOpaque(false);
listUI.add(js);
jp.add(playUI);
jp.add(listUI);
jp.add(labelUI);
//底部容器添加上部容器
add(jp);
//JFrame添加底部容器
validate(); //改变容器后重新布局
add.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
add.setContentAreaFilled(true);
JFileChooser openfile=new JFileChooser("G:/Kugou/");
openfile.setMultiSelectionEnabled(true);
FileNameExtensionFilter ff = new FileNameExtensionFilter( null, "mp3");
openfile.setFileFilter(ff);
openfile.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
int result=openfile.showOpenDialog(null);
add.setContentAreaFilled(false);
if(result==openfile.APPROVE_OPTION)
fd=openfile.getSelectedFiles();
int x;
for(x=0;x<fd.length;x++)
{lujin.add(fd[x].getAbsolutePath());
wenjian=fd[x].getAbsolutePath();
new qulujin(wenjian);
}
list.setListData(name);
new save(lujin);
}
});
list.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent event){
if(event.getClickCount()==2){
if(list.getSelectedIndex()>=0){
String wj=(String) lujin.get(list.getSelectedIndex());
setTitle(wj);
current=list.getSelectedIndex();
sound.setMediaLocation("file:/"+wj);
sound.start();
play.setIcon(new ImageIcon("image/icon/pause.png"));
playpress++;
}
}
}
});
listshow.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
if(listshowpress%2==1)
{listshow.setIcon(new ImageIcon("image/icon/up.png"));
setSize(300,185);
}
else
{listshow.setIcon(new ImageIcon("image/icon/down.png"));
setSize(300,700);
}
listshowpress++;
}
@Override
public void mouseExited(MouseEvent e) {
if(listshowpress%2==1) listshow.setIcon(new ImageIcon("image/icon/up.png"));
else listshow.setIcon(new ImageIcon("image/icon/down.png"));
}
@Override
public void mouseEntered(MouseEvent e) {
if(listshowpress%2==1) listshow.setIcon(new ImageIcon("image/icon/up1.png"));
else listshow.setIcon(new ImageIcon("image/icon/down1.png"));
}
@Override
public void mouseClicked(MouseEvent e) {
}
});
labelUI.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
listUI.setBounds(5,150,280,510);
labelUI.setBounds(-45,150,50,510);
validate();
}
@Override
public void mouseEntered(MouseEvent e) {
listUI.setBounds(50,150,235,510);
labelUI.setBounds(0,150,50,510);
validate();
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
});
firstlist.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
firstlist.setIcon(new ImageIcon("image/icon/playlist3.png"));
firstlist.setContentAreaFilled(true);
list1.setContentAreaFilled(false);
list2.setContentAreaFilled(false);
list3.setContentAreaFilled(false);
}
@Override
public void mouseExited(MouseEvent e) {
firstlist.setIcon(new ImageIcon("image/icon/playlist1.png"));
listUI.setBounds(5,150,280,510);
labelUI.setBounds(-45,150,50,510);
validate();
}
@Override
public void mouseEntered(MouseEvent e) {
firstlist.setIcon(new ImageIcon("image/icon/playlist2.png"));
listUI.setBounds(50,150,235,510);
labelUI.setBounds(0,150,50,510);
validate();
}
@Override
public void mouseClicked(MouseEvent e) {
}
});
list1.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
list1.setIcon(new ImageIcon("image/icon/playlist3.png"));
list1.setContentAreaFilled(true);
firstlist.setContentAreaFilled(false);
list2.setContentAreaFilled(false);
list3.setContentAreaFilled(false);
}
@Override
public void mouseExited(MouseEvent e) {
list1.setIcon(new ImageIcon("image/icon/playlist1.png"));
listUI.setBounds(5,150,280,510);
labelUI.setBounds(-45,150,50,510);
validate();
}
@Override
public void mouseEntered(MouseEvent e) {
list1.setIcon(new ImageIcon("image/icon/playlist2.png"));
listUI.setBounds(50,150,235,510);
labelUI.setBounds(0,150,50,510);
validate();
}
@Override
public void mouseClicked(MouseEvent e) {
}
});
list2.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
list2.setIcon(new ImageIcon("image/icon/playlist3.png"));
list2.setContentAreaFilled(true);
list1.setContentAreaFilled(false);
firstlist.setContentAreaFilled(false);
list3.setContentAreaFilled(false);
}
@Override
public void mouseExited(MouseEvent e) {
list2.setIcon(new ImageIcon("image/icon/playlist1.png"));
listUI.setBounds(5,150,280,510);
labelUI.setBounds(-45,150,50,510);
validate();
}
@Override
public void mouseEntered(MouseEvent e) {
list2.setIcon(new ImageIcon("image/icon/playlist2.png"));
listUI.setBounds(50,150,235,510);
labelUI.setBounds(0,150,50,510);
validate();
}
@Override
public void mouseClicked(MouseEvent e) {
}
});
list3.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
list3.setIcon(new ImageIcon("image/icon/playlist3.png"));
list3.setContentAreaFilled(true);
list1.setContentAreaFilled(false);
list2.setContentAreaFilled(false);
firstlist.setContentAreaFilled(false);
}
@Override
public void mouseExited(MouseEvent e) {
list3.setIcon(new ImageIcon("image/icon/playlist1.png"));
listUI.setBounds(5,150,280,510);
labelUI.setBounds(-45,150,50,510);
validate();
}
@Override
public void mouseEntered(MouseEvent e) {
list3.setIcon(new ImageIcon("image/icon/playlist2.png"));
listUI.setBounds(50,150,235,510);
labelUI.setBounds(0,150,50,510);
validate();
}
@Override
public void mouseClicked(MouseEvent e) {
}
});
play.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
if(playpress%2==1){
play.setIcon(new ImageIcon("image/icon/play1.png"));
try { Thread.sleep (200) ;
} catch (InterruptedException ie){}
sound.stop();}
else{
if(current!=list.getSelectedIndex())
{sound.stop();
String wi=(String) lujin.get(list.getSelectedIndex());
sound.setMediaLocation("file:/"+wi);
current=list.getSelectedIndex();}
play.setIcon(new ImageIcon("image/icon/pause1.png"));
try { Thread.sleep (200) ;
} catch (InterruptedException ie){}
sound.start();}
}
@Override
public void mousePressed(MouseEvent e) {
playpress++;
String a;
if(playpress%2==1)
play.setIcon(new ImageIcon("image/icon/play2.png"));
else
play.setIcon(new ImageIcon("image/icon/pause2.png"));
}
@Override
public void mouseExited(MouseEvent e) {
if(playpress%2==1)
play.setIcon(new ImageIcon("image/icon/play.png"));
else
play.setIcon(new ImageIcon("image/icon/pause.png"));
}
@Override
public void mouseEntered(MouseEvent e) {
if(playpress%2==1)
play.setIcon(new ImageIcon("image/icon/play1.png"));
else
play.setIcon(new ImageIcon("image/icon/pause1.png"));
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
});
next.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
int x;
x=list.getSelectedIndex()+1;
list.setSelectedIndex(x);
current=list.getSelectedIndex();
String wj=(String) lujin.get(x);
sound.setMediaLocation("file:/"+wj);
sound.start();
next.setIcon(new ImageIcon("image/icon/next1.png"));
play.setIcon(new ImageIcon("image/icon/pause.png"));
}
@Override
public void mousePressed(MouseEvent e) {
next.setIcon(new ImageIcon("image/icon/next2.png"));
}
@Override
public void mouseExited(MouseEvent e) {
next.setIcon(new ImageIcon("image/icon/next.png"));
}
@Override
public void mouseEntered(MouseEvent e) {
next.setIcon(new ImageIcon("image/icon/next1.png"));
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
});
before.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
int x;
x=list.getSelectedIndex()-1;
list.setSelectedIndex(x);
current=list.getSelectedIndex();
String wj=(String) lujin.get(x);
sound.setMediaLocation("file:/"+wj);
sound.start();
before.setIcon(new ImageIcon("image/icon/before1.png"));
play.setIcon(new ImageIcon("image/icon/pause.png"));
}
@Override
public void mousePressed(MouseEvent e) {
before.setIcon(new ImageIcon("image/icon/before2.png"));
}
@Override
public void mouseExited(MouseEvent e) {
before.setIcon(new ImageIcon("image/icon/before.png"));
}
@Override
public void mouseEntered(MouseEvent e) {
before.setIcon(new ImageIcon("image/icon/before1.png"));
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
});
stop.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
sound.setMediaTime(new Time(0));
sound.stop();
stop.setIcon(new ImageIcon("image/icon/stop1.png"));
}
@Override
public void mousePressed(MouseEvent e) {
stop.setIcon(new ImageIcon("image/icon/stop2.png"));
play.setIcon(new ImageIcon("image/icon/play.png"));
if(playpress%2==0) playpress++;
}
@Override
public void mouseExited(MouseEvent e) {
stop.setIcon(new ImageIcon("image/icon/stop.png"));
}
@Override
public void mouseEntered(MouseEvent e) {
stop.setIcon(new ImageIcon("image/icon/stop1.png"));
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
});
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
public class ImagePanel extends JPanel {
protected void paintComponent(Graphics g) {
super.paintComponent(g);
ImageIcon icon = new ImageIcon("image/back1.png");
g.drawImage(icon.getImage(), 0, 0, null);
}
}
public class listshow extends JList{
protected void paintComponent(Graphics g){
Graphics2D g2d=(Graphics2D)g;
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.3f));
}
}
public class save{
save(Vector lujin){
try{
FileOutputStream out=new FileOutputStream("liebiao.txt");
ObjectOutputStream output=new ObjectOutputStream(out);
output.writeObject(lujin);
output.flush();
output.close();
}catch (Exception e1) {
}
}
}
public class read{
read(){
try{
String s;
FileInputStream in=new FileInputStream("liebiao.txt");
ObjectInputStream input=new ObjectInputStream(in);
lujin=(Vector) input.readObject();
input.close();
for(int i=0;lujin.get(i)!=null;i++)
{s= (String) lujin.get(i);
new qulujin(s);}
//list.setListData(lujin);
}catch (Exception e1) {
}
}
}
public class qulujin {
qulujin(String s){
String mc="···";
int i;
int x;
for(i=s.length();i>=1;i--)
{ if(s.charAt(i-1)=='\\')
break;}
for(x=i+1;x<=s.length();x++)
mc+=s.charAt(x-1);
StringBuffer buffer=new StringBuffer(mc);
name.add(buffer);
}
}
}