📄 playframe.java
字号:
ExitjMenuItem.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
ExitjMenuItem.setText("Exit");
ExitjMenuItem.addActionListener(new
PlayFrame_ExitjMenuItem_actionAdapter(this));
NamejLabel.setFont(new java.awt.Font("宋体", Font.BOLD, 14));
NamejLabel.setForeground(new Color(125, 59, 72));
NamejLabel.setHorizontalAlignment(SwingConstants.CENTER);
NamejLabel.setBounds(new Rectangle(24, 0, 158, 14));
Listimage.setBounds(new Rectangle(0, 0, 10, 10));
PlayjMenuItem.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
PlayjMenuItem.setText("Play");
PlayjMenuItem.addActionListener(new
PlayFrame_PlayjMenuItem_actionAdapter(this));
AddjMenuItem.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
AddjMenuItem.setText("Add");
AddjMenuItem.addActionListener(new PlayFrame_AddjMenuItem_actionAdapter(this));
DeletejMenuItem.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
DeletejMenuItem.setText("Delete");
DeletejMenuItem.addActionListener(new
PlayFrame_DeletejMenuItem_actionAdapter(this));
repeatjToggleButton.setToolTipText("");
repeatjToggleButton.setBounds(new Rectangle(33, 38, 26, 14));
repeatjToggleButton.addActionListener(new
PlayFrame_repeatjToggleButton_actionAdapter(this));
FileSliderjPanel.setBounds(new Rectangle(33, 54, 144, 18));
FileSliderjPanel.setLayout(borderLayout1);
StartjMenu.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
StartjMenu.setText("Start");
LoadjMenuItem.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
LoadjMenuItem.setText("Load");
LoadjMenuItem.addActionListener(new
PlayFrame_LoadjMenuItem_actionAdapter(this));
VideojPanel.setBounds(new Rectangle(212, 0, 318, 294));
VideojPanel.setLayout(borderLayout2);
SavejMenuItem.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
SavejMenuItem.setText("Save");
SavejMenuItem.addActionListener(new
PlayFrame_SavejMenuItem_actionAdapter(this));
contentPane.add(ListjPanel);
contentPane.add(ConterjPanel);
AboutjMenuBar.add(StartjMenu);
AboutjMenuBar.add(AboutjMenu);
AboutjMenu.add(HelpjMenuItem);
AboutjMenu.add(AboutjMenuItem);
ListjPanel.add(Listimage);
Listimage.add(jScrollPanel);
jScrollPanel.getViewport().add(List);
Listimage.setLayout(null);
Listimage.setBounds(new Rectangle(0, 0, 207, 207));
Listimage.setImage("img\\Listjpanel.gif");
Listimage.setSize(207, 207);
ListjPanel.add(Listimage);
Conterimage.setLayout(null);
Conterimage.setBounds(new Rectangle(0, 0, 213, 85));
Conterimage.setImage("img\\conterjpanel.gif");
Conterimage.setSize(203, 85);
ConterjPanel.add(Conterimage);
ConterjPanel.add(VideojPanel);
FileSliderimage.setLayout(null);
FileSliderimage.setBounds(new Rectangle(0, 0));
FileSliderimage.setImage("img\\FileSlider.gif");
FileSliderimage.setSize(180, 25);
FileSliderjPanel.add(FileSliderimage);
Conterimage.add(ListjToggleButton);
Conterimage.add(repeatjToggleButton);
Conterimage.add(NamejLabel);
Conterimage.add(PreviousjButton);
Conterimage.add(PlayjButton);
Conterimage.add(PausejButton);
Conterimage.add(OpenjButton);
Conterimage.add(NextjButton);
Conterimage.add(StopjButton);
Conterimage.add(FileSliderjPanel);
ConterjPopupMenu.add(PlayjMenuItem);
ConterjPopupMenu.add(AddjMenuItem);
ConterjPopupMenu.add(DeletejMenuItem);
StartjMenu.add(SavejMenuItem);
StartjMenu.add(LoadjMenuItem);
StartjMenu.add(ExitjMenuItem);
PlayjButton.setToolTipText("Play");
StopjButton.setToolTipText("Stop");
repeatjToggleButton.setToolTipText("Repeat");
ListjToggleButton.setToolTipText("List");
NextjButton.setToolTipText("Next");
PreviousjButton.setToolTipText("Previous");
PausejButton.setToolTipText("Pause");
OpenjButton.setToolTipText("Open");
repeatjToggleButton.setMnemonic(e.VK_R);
StopjButton.setMnemonic(e.VK_S);
PlayjButton.setMnemonic(e.VK_ENTER);
ListjToggleButton.setMnemonic(e.VK_L);
NextjButton.setMnemonic(e.VK_RIGHT);
PreviousjButton.setMnemonic(e.VK_LEFT);
PausejButton.setMnemonic(e.VK_P);
//运行时读取已存在的列表,若列表为空,则不读取
try {
FileReader nr = new FileReader("num.dat");
BufferedReader bnr = new BufferedReader(nr);
FileReader fr = new FileReader("file.dat");
BufferedReader br = new BufferedReader(fr);
FileReader fn = new FileReader("name.dat");
BufferedReader bn = new BufferedReader(fn);
String num1 = bnr.readLine();
bnr.close();
if (num1 != null) {
try {
//num要记录数组下标
num = Integer.parseInt(num1);
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, ex,
"AudioPlayer 1.0",
JOptionPane.CLOSED_OPTION);
}
}
for (int i = 0; i <= num; i++) {
gF[i] = bn.readLine();
gD[i] = br.readLine();
}
//将读取到的文件名加载到List当中
if (num >= 0 && gD[num] != null && gF[num] != null) {
for (int i = 0; i <= num; i++) {
model.addElement(gF[i].toString());
}
br.close();
bn.close();
//指向List中第一个索引处,此处设计是为了防止部分具有播放功能的按钮不会出现异常
List.setSelectedIndex(0);
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, ex,
"AudioPlayer 1.0",
JOptionPane.CLOSED_OPTION);
}
this.SavejMenuItem.setEnabled(false);
this.LoadjMenuItem.setEnabled(false);
}
//点击播放器上部About下拉菜单,点击AboutjMenuItem显示版本信息和制作人
public void AboutjMenuItem_actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(this, "版本:1.0\nWilliam组 制作 [2006年12月]",
"AudioPlayer 1.0",
JOptionPane.CLOSED_OPTION);
}
//点击ListjToggleButton打开/隐藏列表
public void ListjToggleButton_actionPerformed(ActionEvent e) {
if (ListjToggleButton.isSelected()) {
//只显示控制面板的内容
this.setSize(213, 132);
this.setVisible(true);
//设置按钮的图片
ListjToggleButton.setIcon(jb[0]);
} else {
//当有视频窗口时要显示视频窗口,否则隐藏视频窗口
if (visualcom != null) {
this.setSize(539, 345);
} else {
this.setSize(213, 345);
}
this.setVisible(true);
//设置按钮的图片
ListjToggleButton.setIcon(jb[1]);
}
}
//点击OpenjButton打开文件选择对话框,选择后,并播放所选文件
public void OpenjButton_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();
//如果JMF播放器对象存在,就关闭该播放器对象
if (player != null)
player.close();
try {
//根据指定的目录和文件名创建一个媒体定位器(MediaLocator)对象,再利用该媒体定位器对象创建一个JMF播放器对象
player = Manager.createPlayer(new MediaLocator("file:" +
gD[num] +
gF[num]));
} catch (java.io.IOException ex) {
JOptionPane.showMessageDialog(this, ex,
"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;
}
//将PlayerFrame对象注册为来自JMF播放器对象的控制器事件的动作监听器
player.addControllerListener(this);
//让JMF播放器对象预先提取媒体文件的内容
player.prefetch();
//将已选中的文件加载到List当中
model.addElement(gF[num].toString());
//在播放器上方显示当前播放的文件名
NamejLabel.setText(gF[num].toString());
//List中显示当前播放的文件
List.setSelectedIndex(num);
this.SavejMenuItem.setEnabled(true);
this.LoadjMenuItem.setEnabled(true);
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, ex,
"AudioPlayer 1.0",
JOptionPane.CLOSED_OPTION);
}
}
//点击PlayjButton播放List中当前所选的文件
public void PlayjButton_actionPerformed(ActionEvent e) {
//判断播放列表是否为空,如果不为空则播放List中当前所选择的文件,否则弹出消息框
if (model.isEmpty() == true) {
JOptionPane.showMessageDialog(this, "NO Music File",
"AudioPlayer 1.0",
JOptionPane.CLOSED_OPTION);
} else {
//如果JMF播放器对象存在,就关闭该播放器对象
if (player != null)
player.close();
try {
//根据指定的目录和文件名创建一个媒体定位器(MediaLocator)对象,再利用该媒体定位器对象创建一个JMF播放器对象
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;
}
//将PlayerFrame对象注册为来自JMF播放器对象的控制器事件的动作监听器
player.addControllerListener(this);
//最后,让JMF播放器对象预先提取媒体文件的内容
player.prefetch();
//在播放器上方显示当前播放的文件名
NamejLabel.setText(List.getSelectedValue().toString());
}
}
//点击PausejButton暂停List中当前所选的文件
public void PausejButton_actionPerformed(ActionEvent e) {
try {
player.stop();
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, ex, "AudioPlayer 1.0",
JOptionPane.CLOSED_OPTION);
}
}
//点击StopjButton停止List中当前所选的文件
public void StopjButton_actionPerformed(ActionEvent e) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -