📄 musicframe.java
字号:
import javax.swing.*;
import java.util.*;
import java.awt.event.*;
import java.net.*;
import java.applet.*;
import java.awt.*;
import java.io.*;
public class MusicFrame extends JFrame implements ActionListener{
static final long serialVersionUID=80;
JList list;
Hashtable table;
JButton playbutton,stopbutton,loopbutton,addbutton,delbutton;
JScrollPane pane;
URL url;
JPanel panel;
AudioClip audio,current;
Container container;
Dimension screenSize;
Toolkit tool;
MouseListener mouse;
JFileChooser chooser;
Image image;
String[] music={"Letting You Go","don not cry","Years","A Minor Exercise","Single String Doria","Ain't It Fun","Ain't my bitch","Aminor Tapping Exercise","Amorphi","Extreme Dream"};
MusicFrame(String title){
super(title);
tool=getToolkit();
screenSize=tool.getScreenSize();
container=getContentPane();
container.setBackground(Color.ORANGE);
setResizable(false);
setSize(300,200);
URL url=getClass().getResource("/images/music.gif");
if(url!=null){
image=tool.getImage(url);
setIconImage(image);
}
list=new JList(music);
chooser=new JFileChooser();
chooser.setMultiSelectionEnabled(true);
pane=new JScrollPane(list);
panel=new JPanel(new GridLayout(5,1));
panel.setBackground(Color.ORANGE);
playbutton=new JButton("play");
stopbutton=new JButton("stop");
stopbutton.setEnabled(false);
loopbutton=new JButton("loop");
addbutton=new JButton("add");
delbutton=new JButton("delete");
panel.add(playbutton);
panel.add(stopbutton);
panel.add(loopbutton);
panel.add(addbutton);
panel.add(delbutton);
playbutton.addActionListener(this);
stopbutton.addActionListener(this);
loopbutton.addActionListener(this);
addbutton.addActionListener(this);
delbutton.addActionListener(this);
table=new Hashtable();
mouse = new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
int index = list.locationToIndex(e.getPoint());
if(current!=null){
current.stop();
}
current=(AudioClip)table.get(music[index]);
if(current!=null){
current.play();
}
else{
setTitle("无法播放"+music[index]);
return;
}
stopbutton.setEnabled(true);
setTitle("正在播放"+music[index]);
}
}
};
list.addMouseListener(mouse);
for(int i=0;i<music.length;i++){
url=getClass().getResource("/music/"+music[i]+".mid");
if(url!=null){
audio=Applet.newAudioClip(url);
table.put(music[i],audio);
}
}
container.add(pane,BorderLayout.CENTER);
container.add(panel,BorderLayout.EAST);
setLocation((screenSize.width-getSize().width)/2,(screenSize.height-getSize().height)/2);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
setVisible(false);
}
});
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==playbutton){
if(list.getSelectedIndices().length==1){
if(current!=null){
current.stop();
}
current=(AudioClip)table.get(music[list.getSelectedIndex()]);
if(current!=null){
current.play();
}
else{
setTitle("无法播放"+music[list.getSelectedIndex()]);
return;
}
stopbutton.setEnabled(true);
setTitle("正在播放"+music[list.getSelectedIndex()]);
}
}
else if(e.getSource()==loopbutton){
if(list.getSelectedIndices().length==1){
if(current!=null){
current.stop();
}
current=(AudioClip)table.get(music[list.getSelectedIndex()]);
if(current!=null){
current.loop();
}
else{
setTitle("无法播放"+music[list.getSelectedIndex()]);
return;
}
setTitle("正在循环播放"+music[list.getSelectedIndex()]);
stopbutton.setEnabled(true);
}
}
else if(e.getSource()==stopbutton){
if(current!=null){
current.stop();
current=null;
playbutton.setEnabled(true);
loopbutton.setEnabled(true);
stopbutton.setEnabled(false);
setTitle("音乐无限");
}
}
else if(e.getSource()==addbutton){
int state=chooser.showOpenDialog(this);
File[] file=chooser.getSelectedFiles();
if(file!=null&&state==JFileChooser.APPROVE_OPTION){
container.remove(pane);
String[] temp=music;
music=new String[file.length+music.length];
for(int i=0;i<music.length;i++){
if(i<temp.length){
music[i]=temp[i];
}
else{
music[i]=file[i-temp.length].getName();
try{
url=file[i-temp.length].toURL();
}
catch(MalformedURLException e2){
System.err.print(e2);
}
audio=Applet.newAudioClip(url);
table.put(music[i],audio);
}
}
list=new JList(music);
list.addMouseListener(mouse);
pane=new JScrollPane(list);
container.add(pane,BorderLayout.CENTER);
validate();
}
else{
System.out.print("fsfsdf");
}
}
else{
int[] n=list.getSelectedIndices();
if(n!=null){
String[] temp=music;
for(int i=0;i<n.length;i++){
table.remove(temp[n[i]]);
temp[n[i]]=null;
}
music=new String[music.length-n.length];
int j=0;
for(int i=0;i<music.length;i++){
while(temp[j]==null){
j++;
}
music[i]=temp[j];
j++;
}
pane.remove(list);
container.remove(pane);
list=new JList(music);
list.addMouseListener(mouse);
pane=new JScrollPane(list);
container.add(pane,BorderLayout.CENTER);
validate();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -