📄 playframe.java
字号:
try {
if (player != null) {
player.stop();
player.setMediaTime(new Time(0));
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, ex,
"AudioPlayer 1.0",
JOptionPane.CLOSED_OPTION);
}
}
//点击NextjButton指向List中当前所选的文件的下一个文件
public void NextjButton_actionPerformed(ActionEvent e) {
try {
//如果当前文件为最后一个则指向第一个文件,否则指向下一个文件
if (List.getSelectedIndex() == num) {
List.setSelectedIndex(0);
NamejLabel.setText(List.getSelectedValue().toString());
} else {
List.setSelectedIndex(List.getSelectedIndex() + 1);
NamejLabel.setText(List.getSelectedValue().toString());
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, "NO File", "AudioPlayer 1.0",
JOptionPane.CLOSED_OPTION);
} finally {
//播放List中当前指向的文件
if (model.isEmpty() != true) {
if (gF[List.getSelectedIndex()] == null)
return;
if (player != null)
player.close();
try {
player = Manager.createPlayer(new MediaLocator("file:" +
gD[List.getSelectedIndex()] +
gF[List.getSelectedIndex()]));
} catch (java.io.IOException e2) {
JOptionPane.showMessageDialog(this, e2,
"AudioPlayer 1.0",
JOptionPane.CLOSED_OPTION);
return;
} catch (NoPlayerException e2) {
JOptionPane.showMessageDialog(this, "不能找到播放器.",
"AudioPlayer 1.0",
JOptionPane.CLOSED_OPTION);
return;
}
if (player == null) {
JOptionPane.showMessageDialog(this, "无法创建播放器.",
"AudioPlayer 1.0",
JOptionPane.CLOSED_OPTION);
return;
}
player.addControllerListener(this);
player.prefetch();
}
}
}
//点击PreviousjButton指向List中当前所选的文件的上一个文件
public void PreviousjButton_actionPerformed(ActionEvent e) {
try {
//如果当前文件为第一个则指向最后一个文件,否则指向上一个文件
if (List.getSelectedIndex() == 0) {
List.setSelectedIndex(num);
NamejLabel.setText(List.getSelectedValue().toString());
} else {
List.setSelectedIndex(List.getSelectedIndex() - 1);
NamejLabel.setText(List.getSelectedValue().toString());
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, "NO File", "AudioPlayer 1.0",
JOptionPane.CLOSED_OPTION);
} finally {
//播放List中当前指向的文件
if (model.isEmpty() != true) {
if (gF[List.getSelectedIndex()] == null)
return;
if (player != null)
player.close();
try {
player = Manager.createPlayer(new MediaLocator("file:" +
gD[List.getSelectedIndex()] +
gF[List.getSelectedIndex()]));
} catch (java.io.IOException ex) {
JOptionPane.showMessageDialog(this, ex,
"AudioPlayer 1.0",
JOptionPane.CLOSED_OPTION);
return;
} catch (NoPlayerException ex) {
JOptionPane.showMessageDialog(this, "不能找到播放器.",
"AudioPlayer 1.0",
JOptionPane.CLOSED_OPTION);
return;
}
if (player == null) {
JOptionPane.showMessageDialog(this, "无法创建播放器.",
"AudioPlayer 1.0",
JOptionPane.CLOSED_OPTION);
return;
}
player.addControllerListener(this);
player.prefetch();
}
}
}
//退出播放器
public void ExitjMenuItem_actionPerformed(ActionEvent e) {
if (player != null) {
player.close();
player.stop();
}
System.exit(0);
}
//Player 播放器对象的控制器事件的动作监听器
public void controllerUpdate(ControllerEvent e) {
//如果播放器被关闭时
if (e instanceof ControllerClosedEvent) {
//如果视频部件还存在,从VideojPanel面板中删除该视频部件
if (visualcom != null) {
VideojPanel.remove(visualcom);
visualcom = null;
}
//如果控制面板部件还存在,从FileSliderjPanel面板中删除该控制面板部件
if (controlcom != null) {
FileSliderjPanel.remove(controlcom);
controlcom = null;
}
return;
}
//当媒体播放结束时
if (e instanceof EndOfMediaEvent) {
//如果当前为“循环播放”状态
if (loop) {
if (List.getSelectedIndex() == num) {
List.setSelectedIndex(0);
NamejLabel.setText(List.getSelectedValue().toString());
} else {
List.setSelectedIndex(List.getSelectedIndex() + 1);
NamejLabel.setText(List.getSelectedValue().toString());
}
player.close();
//复位JMF播放器对象的开始时间
player.setMediaTime(new Time(0));
//让JMF播放器对象播放下一个文件
try {
player = Manager.createPlayer(new MediaLocator("file:" +
gD[List.getSelectedIndex()] +
gF[List.getSelectedIndex()]));
player.addControllerListener(this);
player.prefetch();
} catch (Exception ex) {
}
}
return;
}
//如果预取媒体文件内容结束时
if (e instanceof PrefetchCompleteEvent) {
//让JMF播放器对象开始播放该媒体
player.start();
return;
}
//当实例化(Realize)媒体文件完成时
if (e instanceof RealizeCompleteEvent) {
//获取JMF播放器对象的视频部件
visualcom = player.getVisualComponent();
//如果视频部件存在,将视频部件加入到VideojPanel面板的中央
if (visualcom != null) {
this.VideojPanel.add(visualcom, BorderLayout.CENTER);
}
//获取JMF播放器对象的控制面板部件
controlcom = player.getControlPanelComponent();
//如果控制面板部件存在,将控制面板部件加入到FileSliderjPanel面板的中央
if (controlcom != null)
this.FileSliderjPanel.add(controlcom, BorderLayout.SOUTH);
//执行pack操作
this.pack();
//如果视频部件存在,将打开视频窗口,否则隐藏视频窗口
if (visualcom != null) {
this.setSize(539, 345);
} else {
this.setSize(213, 345);
}
this.setVisible(true);
}
}
//点击repeatjToggleButton来设置当前循环模式
public void repeatjToggleButton_actionPerformed(ActionEvent e) {
if (repeatjToggleButton.isSelected()) {
repeatjToggleButton.setIcon(jb[2]);
loop = false;
} else {
repeatjToggleButton.setIcon(jb[3]);
loop = true;
}
}
//右键点击DeletejMenuItem删除List中当前所选的文件,删除后,选择到最大索引处
public void DeletejMenuItem_actionPerformed(ActionEvent e) {
try {
//如果List不为空则删除当前所选的文件
if (List.getMaxSelectionIndex() != -1) {
int m = List.getMaxSelectionIndex();
gD[m] = null;
gF[m] = null;
for (int i = m; i <= num; i++) {
gD[i] = gD[i + 1];
gF[i] = gF[i + 1];
}
model.remove(List.getSelectedIndex());
List.setSelectedIndex(List.getSelectedIndex() + num);
--num;
}
} catch (Exception ex) {
}
this.SavejMenuItem.setEnabled(true);
this.LoadjMenuItem.setEnabled(true);
}
//右键点击AddjMenuItem,将弹出文件添加对话框,选择文件后,将添加到List末尾
public void AddjMenuItem_actionPerformed(ActionEvent e) {
try {
++num;
//创建一个对话框对象,标题设置为“添加媒体文件”
OpenFileDialog = new FileDialog(this, "添加媒体文件", FileDialog.LOAD);
OpenFileDialog.setDirectory(gD[num]);
OpenFileDialog.setVisible(true);
if (OpenFileDialog.getFile() == null) {
--num;
} else {
gD[num] = OpenFileDialog.getDirectory();
gF[num] = OpenFileDialog.getFile();
//将所选的文件添加到List末尾
model.addElement(gF[num].toString());
}
} catch (Exception ex) {
}
this.SavejMenuItem.setEnabled(true);
this.LoadjMenuItem.setEnabled(true);
}
//右键点击PlayjMenuItem,将播放List中当前所选的文件
public void PlayjMenuItem_actionPerformed(ActionEvent e) {
//此处是直接调用PlayjButton事件的动作监听
this.PlayjButton_actionPerformed(e);
}
//点击播放器上部About下拉菜单,点击Help,将弹出帮助文档
public void HelpjMenuItem_actionPerformed(ActionEvent e) {
Runtime rt = Runtime.getRuntime();
try {
rt.exec("hh.exe help.chm");
} catch (Exception ex) {
}
}
//点击播放器上部Start下拉菜单,点击SavejMenuItem,将保存当前List中的全部索引
public void SavejMenuItem_actionPerformed(ActionEvent e) {
this.LoadjMenuItem.setEnabled(true);
try {
//file.dat存储当前列表中的所有文件的路径
FileWriter fw = new FileWriter("file.dat");
BufferedWriter bw = new BufferedWriter(fw);
//name.dat存储当前列表中的所有文件的文件名
FileWriter fn = new FileWriter("name.dat");
BufferedWriter bn = new BufferedWriter(fn);
//将gD和gF分别保存到file.dat和name.dat文件中
for (int i = 0; i <= num; i++) {
bw.write(gD[i]);
bw.newLine();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -