📄 playframe.java
字号:
package audioplayer;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Rectangle;
import javax.swing.JButton;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JList;
import javax.swing.JLabel;
import javax.swing.DefaultListModel;
import javax.swing.JScrollPane;
import java.awt.Component;
import javax.swing.JOptionPane;
import javax.swing.JToggleButton;
import javax.swing.JMenuBar;
import java.awt.Font;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import java.awt.Color;
import javax.swing.ImageIcon;
import javax.swing.SwingConstants;
import javax.media.ControllerListener;
import javax.media.Player;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.NoPlayerException;
import javax.media.ControllerEvent;
import javax.media.ControllerClosedEvent;
import javax.media.EndOfMediaEvent;
import javax.media.Time;
import javax.media.PrefetchCompleteEvent;
import javax.media.RealizeCompleteEvent;
import java.awt.FileDialog;
import javax.swing.JPopupMenu;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.Event;
import java.awt.BorderLayout;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.FileReader;
import java.io.BufferedReader;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class PlayFrame extends JFrame implements ControllerListener {
//num:列表计数器和数组下标
Integer num = -1;
//gD:文件路径 gF:文件名
String[] gD = new String[50];
String[] gF = new String[50];
//声明Player变量
Player player;
//声明文件读取变量
FileDialog OpenFileDialog;
//声明视频窗口变量(visualcom)、播放控制变量(controlcom)
Component visualcom, controlcom;
//声明循环控制变量,true为循环播放
boolean loop = true;
JPanel contentPane;
//ConterjPanel:控制面板
JPanel ConterjPanel = new JPanel();
//ListjPanel:列表面板
JPanel ListjPanel = new JPanel();
ImageIcon[] jb = {new ImageIcon("img\\max.gif"),
new ImageIcon("img\\min.gif"),
new ImageIcon("img\\repeat.gif"),
new ImageIcon("img\\shufflerepeat.gif")};
//PlayjButton:播放按钮
JButton PlayjButton = new JButton(new ImageIcon("img\\play.gif"));
//PausejButton:暂停按钮
JButton PausejButton = new JButton(new ImageIcon("img\\pause.gif"));
//StopjButton:停止按钮
JButton StopjButton = new JButton(new ImageIcon("img\\stop.gif"));
//OpenjButton:打开按钮
JButton OpenjButton = new JButton(new ImageIcon("img\\open.gif"));
//model为非空模型,用于List的显示
DefaultListModel model = new DefaultListModel();
//List:文件列表
JList List = new JList(model);
JScrollPane jScrollPanel = new JScrollPane();
//ListjToggleButton:打开/隐藏列表按钮
JToggleButton ListjToggleButton = new JToggleButton(jb[1]);
//NextjButton:下一个
JButton NextjButton = new JButton(new ImageIcon("img\\next.gif"));
//PreviousjButton:上一个
JButton PreviousjButton = new JButton(new ImageIcon("img\\back.gif"));
JMenuBar AboutjMenuBar = new JMenuBar();
JMenu AboutjMenu = new JMenu();
//HelpjMenuItem:帮助文档
JMenuItem HelpjMenuItem = new JMenuItem();
//AboutjMenuItem:版本信息及制作人
JMenuItem AboutjMenuItem = new JMenuItem();
//ExitjMenuItem:退出
JMenuItem ExitjMenuItem = new JMenuItem();
//NamejLabel:显示当前文件名
JLabel NamejLabel = new JLabel();
TestImage Conterimage = new TestImage();
TestImage Listimage = new TestImage();
TestImage FileSliderimage = new TestImage();
//ConterjPopupMenu:右键菜单
JPopupMenu ConterjPopupMenu = new JPopupMenu();
JMenuItem PlayjMenuItem = new JMenuItem();
JMenuItem AddjMenuItem = new JMenuItem();
JMenuItem DeletejMenuItem = new JMenuItem();
//repeatjToggleButton:循环/非循环按钮
JToggleButton repeatjToggleButton = new JToggleButton(jb[3]);
//FileSliderjPanel用于显示controlcom上的功能键
JPanel FileSliderjPanel = new JPanel();
BorderLayout borderLayout1 = new BorderLayout();
JMenu StartjMenu = new JMenu();
//LoadjMenuItem:读取已存在的列表(*.dat)
JMenuItem LoadjMenuItem = new JMenuItem();
//VideojPanel用于显示视频
JPanel VideojPanel = new JPanel();
BorderLayout borderLayout2 = new BorderLayout();
//SavejMenuItem:保存当前列表(*.dat)
JMenuItem SavejMenuItem = new JMenuItem();
KeyEvent e;
public PlayFrame() {
try {
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
} catch (Exception exception) {
exception.printStackTrace();
}
}
private void jbInit() throws Exception {
contentPane = (JPanel) getContentPane();
contentPane.setLayout(null);
//注册List范围内的右键监听
List.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent event) {
if (event.getModifiers() == Event.META_MASK) {
ConterjPopupMenu.show(contentPane, event.getX() + 30,
event.getY() + 120);
}
}
});
//注册Listimage范围内的右键监听。当 num > 5 时,List范围内的右键菜单会随jScrollPane的卷轴滚动的方向移动,所以我加了一个List周边的右键,以方便使用
Listimage.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent event) {
if (event.getModifiers() == Event.META_MASK) {
ConterjPopupMenu.show(contentPane, event.getX(),
event.getY() + 87);
}
}
});
//注册List范围内的鼠标双击监听(播放所选择的歌曲)
List.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent event) {
if (event.getClickCount() == 2 && event.getButton() == 1) {
PlayjButton.doClick();
}
}
});
//添加List范围内的删除按钮的快捷键(Delete)
List.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == e.VK_DELETE) {
DeletejMenuItem.doClick();
List.setSelectedIndex(List.getSelectedIndex());
}
}
});
//添加List范围内的添加歌曲按钮的快捷键(insert)
List.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == e.VK_INSERT) {
AddjMenuItem.doClick();
}
}
});
//添加List范围内的帮助按钮的快捷键(F1)
List.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == e.VK_F1) {
HelpjMenuItem.doClick();
}
}
});
/*//添加List范围内的下一个按钮的快捷键(->)
List.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == e.VK_RIGHT) {
NextjButton.doClick();
}
}
});
//添加List范围内的上一个按钮的快捷键(<-)
List.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == e.VK_LEFT) {
PreviousjButton.doClick();
}
}
});
//添加List范围内的播放按钮的快捷键(Enter)
List.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == e.VK_ENTER) {
PlayjButton.doClick();
}
}
});
//添加List范围内的停止按钮的快捷键(S)
List.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == e.VK_S) {
StopjButton.doClick();
}
}
});
//添加List范围内的播放列表按钮的快捷键(L)
List.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == e.VK_L) {
ListjToggleButton.doClick();
}
}
});
//添加List范围内的播放模式按钮的快捷键(R)
List.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == e.VK_R) {
repeatjToggleButton.doClick();
}
}
});*/
this.getContentPane().setBackground(new Color(212, 138, 200));
this.setJMenuBar(AboutjMenuBar);
this.setResizable(false);
setSize(new Dimension(213, 345));
setTitle("AudioPlayer 1.0");
contentPane.setBackground(new Color(212, 208, 200));
contentPane.setRequestFocusEnabled(true);
ConterjPanel.setBounds(new Rectangle(0, 0, 213, 85));
ConterjPanel.setLayout(null);
ListjPanel.setBounds(new Rectangle(0, 87, 213, 213));
ListjPanel.setLayout(null);
PlayjButton.setBackground(new Color(212, 208, 200));
PlayjButton.setBounds(new Rectangle(57, 16, 22, 17));
PlayjButton.addActionListener(new PlayFrame_PlayjButton_actionAdapter(this));
PausejButton.setBackground(new Color(212, 208, 200));
PausejButton.setBounds(new Rectangle(78, 16, 24, 17));
PausejButton.addActionListener(new PlayFrame_PausejButton_actionAdapter(this));
StopjButton.setBackground(new Color(212, 208, 200));
StopjButton.setBounds(new Rectangle(101, 16, 25, 17));
StopjButton.addActionListener(new PlayFrame_StopjButton_actionAdapter(this));
OpenjButton.setBackground(new Color(212, 208, 200));
OpenjButton.setBounds(new Rectangle(147, 16, 24, 17));
OpenjButton.addActionListener(new PlayFrame_OpenjButton_actionAdapter(this));
jScrollPanel.setBounds(new Rectangle(30, 31, 149, 145));
ListjToggleButton.setBackground(new Color(212, 208, 200));
ListjToggleButton.setBounds(new Rectangle(172, 72, 28, 13));
ListjToggleButton.addActionListener(new
PlayFrame_ListjToggleButton_actionAdapter(this));
NextjButton.setBackground(new Color(212, 208, 200));
NextjButton.setBounds(new Rectangle(125, 16, 23, 17));
NextjButton.addActionListener(new PlayFrame_NextjButton_actionAdapter(this));
PreviousjButton.setBackground(new Color(212, 208, 200));
PreviousjButton.setBounds(new Rectangle(34, 16, 23, 17));
PreviousjButton.addActionListener(new
PlayFrame_PreviousjButton_actionAdapter(this));
AboutjMenuBar.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
AboutjMenu.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
AboutjMenu.setText("About");
HelpjMenuItem.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
HelpjMenuItem.setText("Help");
HelpjMenuItem.addActionListener(new
PlayFrame_HelpjMenuItem_actionAdapter(this));
AboutjMenuItem.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
AboutjMenuItem.setText("About Me");
AboutjMenuItem.addActionListener(new
PlayFrame_AboutjMenuItem_actionAdapter(this));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -