67,512
社区成员
发帖
与我相关
我的任务
分享
package com.window;
import com.player.Player;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
/**
* Created by Administrator on 2016/12/24.
*/
public class ButtonWindow extends JFrame implements ActionListener {
// 取得屏幕的宽度
int width = Toolkit.getDefaultToolkit().getScreenSize().width;
// 取得屏幕的高度
int height = Toolkit.getDefaultToolkit().getScreenSize().height;
/**
* 本地文件
*/
JButton localButton=null;
/**
* 选择本地文件弹窗
*/
TextField localTextField =null;
String localValue=null;
/**
* 前一首
*/
JButton preButton=null;
/**
* 下一首
*/
JButton nextButton=null;
/**
* 播放
*/
JButton startButton=null;
/**
* 暂停
*/
JButton stopButton=null;
/**
* 声音
*/
JButton soundButton=null;
/**
* 歌词
*/
JButton lyricButton=null;
/**
* 列表
*/
JButton listButton=null;
/**
* 播放模式
*/
JButton loopButton=null;
/**
* 播放器
*/
Player player=null;
private static final long serialVersionUID = 1L;
public ButtonWindow() {
JFrame frame = new JFrame("音乐播放器");//创建顶层容器并初始化
Container c = frame.getContentPane(); //获取面板容器
Container c2 = frame.getContentPane(); //获取面板容器
JPanel filePanel=new JPanel();
JPanel operationPanel=new JPanel();
localButton=new JButton("本地文件");
localTextField=new TextField(20);
preButton=new JButton("上一首");
nextButton=new JButton("下一首");
startButton=new JButton("播放");
stopButton=new JButton("暂停");
soundButton=new JButton("音量");
lyricButton=new JButton("歌词");
listButton=new JButton("列表");
loopButton=new JButton("循环");
localButton.addActionListener(this);
preButton.addActionListener(this);
nextButton.addActionListener(this);
// startButton.addActionListener(this);
stopButton.addActionListener(this);
soundButton.addActionListener(this);
lyricButton.addActionListener(this);
listButton.addActionListener(this);
loopButton.addActionListener(this);
startButton.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent event) {
System.out.println("鼠标事件");
Thread thread=new Player();
System.out.println("开始播放...");
startButton.setFocusable(false);
thread.run();
}
});
filePanel.add(localButton);
filePanel.add(localTextField);
operationPanel.add(preButton);
operationPanel.add(nextButton);
operationPanel.add(startButton);
operationPanel.add(stopButton);
operationPanel.add(soundButton);
operationPanel.add(lyricButton);
operationPanel.add(listButton);
operationPanel.add(loopButton);
c2.add(filePanel);//将面板添加到窗口
c.add(operationPanel);//将面板添加到窗口
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
FlowLayout flow=new FlowLayout( );
flow.setAlignment(flow.LEFT);
frame.setSize(600,600);
frame.setLocation((width-600)/2, (height-600)/2);;
frame.setLayout(flow);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);//显示窗口
player=new Player();
}
@Override
public void actionPerformed(ActionEvent e) {
// 播放按钮
if (e.getSource() == localButton){
JFileChooser chooser = new JFileChooser(); //创建选择文件对象
chooser.setDialogTitle("请选择文件");//设置标题
// chooser.setMultiSelectionEnabled(false); //true设置只能选择文件
// chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);//指定获取文件夹的路径
chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES );//指定获取文件夹的路径
// chooser.getFileSelectionMode();//指定获取文件夹的路径
chooser.setVisible(true);
chooser.showOpenDialog(null);
if(chooser.getSelectedFile()!=null){
File file = chooser.getSelectedFile(); //file为用户选择的图片文件
localTextField.setText(file.toString());
}
}else if (e.getSource() == startButton) {
localValue = this.localTextField.getText();
if((localValue==null)||("".equals(localValue))){
JOptionPane.showMessageDialog(null,"请选择源文件");
}else{
// System.out.println("获取文件名...");
// player.setFileName(localValue);
// System.out.println("开始播放...");
Thread thread=new Player();
thread.run();
System.out.println("播放完毕");
// JOptionPane.showMessageDialog(null,"001至少指定宽度或高度中的其中一个");
}
}else if (e.getSource() == stopButton) {
player.close();
System.out.println("关闭");
}
}
public static void init(){
new ButtonWindow();
}
public static void main(String[] args) {
init();
}
}
System.out.println("鼠标事件");
Thread thread=new Player();
System.out.println("开始播放...");
startButton.setFocusable(false);
thread.run();
我是把Player类集成了线程,但是结果是一样的,不知道怎么写线程[/quote]不应该是start吗
全部代码给我 我给你小改一下
System.out.println("鼠标事件");
Thread thread=new Player();
System.out.println("开始播放...");
startButton.setFocusable(false);
thread.run();
我是把Player类集成了线程,但是结果是一样的,不知道怎么写线程[/quote]我下午有时间 给你改一下
System.out.println("鼠标事件");
Thread thread=new Player();
System.out.println("开始播放...");
startButton.setFocusable(false);
thread.run();
我是把Player类集成了线程,但是结果是一样的,不知道怎么写线程
package com.player;
import com.player.MusicPlayer;
import javazoom.jl.player.Player;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
/**
* MP3文件播放器
* @author zhaosj
* 2016-12-25
*/
public class MP3Player extends MusicPlayer {
/**
文件名称
*/
private String fileName;
private Player player;
public MP3Player() {
}
public Player getPlayer() {
return player;
}
public void setPlayer(Player player) {
this.player = player;
}
public MP3Player(String fileName) {
this.fileName = fileName;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
/**
* 播放
*/
@Override
public void play(){
try {
BufferedInputStream buffer = new BufferedInputStream(new FileInputStream(fileName));
player = new Player(buffer);
player.play();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void close(){
player.close();
}
}
package com.player;
/**
* Created by Administrator on 2016/12/24.
*/
public class MusicPlayer{
private String fileName;
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public MusicPlayer() {
}
public MusicPlayer(String fileName) {
this.fileName = fileName;
}
/**
* 播放
*/
public void play(){
}
/**
* 关闭
*/
public void close(){
}
}
package com.player;
import com.player.MusicPlayer;
import davaguine.jmac.player.Player;
import java.io.IOException;
/**
* APE文件播放器<br/>
* Created by Administrator on 2016/12/23.
*/
public class ApePlayer extends MusicPlayer{
/**
文件名称
*/
private String fileName;
private Player player;
public ApePlayer() {
}
public ApePlayer(String fileName) {
this.fileName = fileName;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public Player getPlayer() {
return player;
}
public void setPlayer(Player player) {
this.player = player;
}
/**
* 播放
*/
@Override
public void play(){
try {
player = new Player(fileName);
player.play();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void close() {
try {
player.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
System.out.println("鼠标事件");
Thread thread=new Player();
System.out.println("开始播放...");
startButton.setFocusable(false);
thread.run();
我是把Player类集成了线程,但是结果是一样的,不知道怎么写线程[/quote]不应该是start吗
全部代码给我 我给你小改一下[/quote]
不好意思啊,下午一直在开会,代码在家里,回家后把代码贴出来,到时候给帮忙看看