import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import javax.media.CannotRealizeException;
import javax.media.Manager;
import javax.media.NoPlayerException;
import javax.media.Player;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSlider;
import javax.swing.JTextField;
import javax.swing.JToolBar;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class MainFrame extends JFrame {
private final int width = 600;
private final int height = 600;
//图片播放
private ImagePlayer imagePlayer = new ImagePlayer();
private List<String> imageList = new ArrayList<String>();
//音频播放
private AudioPlayer audioPlayer = null;
private URL[] audioURLs;
private int audioIdx = 0;
private ImageFileChooser imageFC;
private AudioFileChooser audioFC;
JTextField showVal = new JTextField("播放图片间隔为:1000ms");
JSlider slider = new JSlider(100, 2000);
public MainFrame() {
super();
init();
}
public void init() {
//组装界面
createMenuBar();
JPanel toolBar = createToolPanel();
this.add(toolBar, BorderLayout.SOUTH);
this.add(new JScrollPane(imagePlayer), BorderLayout.CENTER);
new Thread(imagePlayer).start();
// 设置界面
this.setTitle("FlashPlayer");
this.setPreferredSize(new Dimension(width, height));
this.setVisible(true);
this.pack();
}
public void createMenuBar() {
JMenuBar menuBar = new JMenuBar();
JMenu menu = new JMenu("打开");
JMenuItem itemFile = new JMenuItem("打开图片");
JMenuItem itemAudio = new JMenuItem("打开背景音乐");
//加监听器
itemFile.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
imageFC = new ImageFileChooser();
int returnVal = imageFC.showOpenDialog(MainFrame.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File[] files = imageFC.getSelectedFiles();
//清空,支持二次加载图片
imageList.clear();
for (File file : files) {
String path = file.getPath();
imageList.add(path);
}
imagePlayer.setImageList(imageList);
}
}
});
itemAudio.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
audioFC = new AudioFileChooser();
int returnVal = audioFC.showOpenDialog(MainFrame.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File[] files = audioFC.getSelectedFiles();
//停止正在播放
if (audioPlayer != null) {
audioPlayer.close();
}
//转换成URL
// 之前出现空指针错误
audioURLs = new URL[files.length];
for (int i=0; i<files.length; i++) {
try {
audioURLs[i] = files[i].toURI().toURL();
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
//播放
audioPlayer = new AudioPlayer(audioURLs);
audioPlayer.play();
/* try {
audioPlayer = Manager.createRealizedPlayer(audioURLs[0]);
audioPlayer.start();
} catch (NoPlayerException | IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (CannotRealizeException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}*/
}
}
});
//
menu.add(itemFile);
menu.addSeparator();
menu.add(itemAudio);
menuBar.add(menu);
this.setJMenuBar(menuBar);
}
public JPanel createToolPanel() {
JPanel panel = new JPanel();
panel.setLayout(new FlowLayout(FlowLayout.LEFT));
JToolBar toolBar = new JToolBar();
toolBar.setFloatable(false);
//toolBar中增加按钮
//写一个ImagePlayerListener
JButton bnPlay = new JButton("播放");
bnPlay.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
imagePlayer.play();
audioPlayer.play();
}
});
JButton bnPause = new JButton("暂停");
bnPause.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
imagePlayer.pause();
audioPlayer.pause();
}
});
JButton bnSpeedUp = new JButton("加速");
bnSpeedUp.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
imagePlayer.speedUp();
slider.setValue(imagePlayer.interval);
}
});
JButton bnSlowDown = new JButton("减速");
bnSlowDown.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
imagePlayer.slowDown();
slider.setValue(imagePlayer.interval);
}
});
//播放间隔 100 ms -2000ms
slider.setPaintTicks(true);
slider.setMajorTickSpacing(500);
slider.setMinorTickSpacing(100);
slider.setValue(1000);
slider.addChangeListener(new ChangeListener(){
@Override
public void stateChanged(ChangeEvent e) {
JSlider source = (JSlider) e.getSource();
showVal.setText("播放图片间隔为:" + source.getValue() + "ms");
imagePlayer.setInterval(source.getValue());
}
});
showVal.setEditable(false);
JButton bnNextAudio = new JButton("下一首");
bnNextAudio.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
audioPlayer.next();
}
});
toolBar.add(bnPlay);
toolBar.add(bnPause);
toolBar.add(bnSpeedUp);
toolBar.add(bnSlowDown);
toolBar.add(slider);
toolBar.add(showVal);
toolBar.add(bnNextAudio);
panel.add(toolBar);
return panel;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
PhotoPlayer.rar (26个子文件)
PhotoPlayer
.project 387B
src
AudioPlayer.java 2KB
ImageFileChooser.java 1019B
AudioFileChooser.java 961B
Main.java 200B
ImagePlayer.java 2KB
MainFrame.java 6KB
.settings
org.eclipse.jdt.core.prefs 598B
jmf.jar 1.99MB
bin
AudioFileChooser.class 764B
MainFrame$4.class 824B
MainFrame$8.class 734B
Main.class 472B
MainFrame$1.class 2KB
ImagePlayer.class 2KB
MainFrame$3.class 823B
MainFrame$6.class 886B
MainFrame$2.class 2KB
MainFrame.class 5KB
AudioFileChooser$AudioFilter.class 1KB
ImageFileChooser$ImageFilter.class 1KB
AudioPlayer.class 2KB
MainFrame$5.class 885B
ImageFileChooser.class 764B
.gitignore 339B
MainFrame$7.class 1KB
共 26 条
- 1
资源评论
x_Orange
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功