📄 musicframe.java
字号:
package musicplayer;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.Properties;import java.io.FileInputStream;import java.io.File;public class MusicFrame extends JFrame { protected MusicBase pBase = null; protected String searchDir = null; protected int curPlayListLength = 0; static final String MUSIC_DIR_PROPERTY = "musicdir"; static final String DEFAULT_DIR = "music"; static final String CONFIG_FILE_NAME = "play.ini"; private JPanel refContentPane; private JMenuBar playerMenu = new JMenuBar(); private JMenu menuFile = new JMenu(); private JMenuItem menuFileExit = new JMenuItem(); private JMenu menuHelp = new JMenu(); private JMenuItem menuHelpAbout = new JMenuItem(); private JPanel listPanel = new JPanel(); private JPanel buttonPanel = new JPanel(); private JButton prevBttn = new JButton(); JButton playBttn = new JButton(); JButton pauseBttn = new JButton(); JButton stopBttn = new JButton(); JList filenamesList = new JList(); JButton nextBttn = new JButton(); public MusicFrame() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { guiInit(); logicInit(); pBase = new MusicBase(); } catch(Exception e) { e.printStackTrace(); } } private void guiInit() throws Exception { refContentPane = (JPanel) this.getContentPane(); refContentPane.setLayout(new BorderLayout()); this.setSize(new Dimension(400, 300)); this.setTitle("Java音频播放器"); menuFile.setText("文件"); menuFileExit.setText("退出"); menuFileExit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { menuFileExitClick(e); } }); menuHelp.setText("帮助"); menuHelpAbout.setText("关于"); menuHelpAbout.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { menuHelpAboutClick(e); } }); buttonPanel.setPreferredSize(new Dimension(30, 100)); buttonPanel.setLayout(new GridLayout()); prevBttn.setText( "后退"); prevBttn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { prevClick(e); } }); playBttn.setText( "播放"); playBttn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { playClick(e); } }); pauseBttn.setText( "暂停"); pauseBttn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { pauseClick(e); } }); stopBttn.setText( "停止"); stopBttn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { stopClick(e); } }); nextBttn.setText( "前进"); nextBttn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { nextClick(e); } }); filenamesList.setToolTipText("可播放音乐文件的清单"); listPanel.setLayout(new BorderLayout()); menuFile.add(menuFileExit); menuHelp.add(menuHelpAbout); playerMenu.add(menuFile); playerMenu.add(menuHelp); this.setJMenuBar(playerMenu); refContentPane.add(listPanel, BorderLayout.CENTER); listPanel.add(filenamesList, BorderLayout.CENTER); refContentPane.add(buttonPanel, BorderLayout.SOUTH); buttonPanel.add(prevBttn, null); buttonPanel.add(playBttn, null); buttonPanel.add(pauseBttn, null); buttonPanel.add(stopBttn, null); buttonPanel.add(nextBttn, null); } private void logicInit() { Properties myProp = null; FileInputStream inFileStream = null ; searchDir = DEFAULT_DIR; try { inFileStream = new FileInputStream(new File(CONFIG_FILE_NAME)); myProp = new Properties(); myProp.load(inFileStream); } catch (Exception ex) { System.out.println("不能访问配置文件"); } if (myProp != null) { searchDir = myProp.getProperty(MUSIC_DIR_PROPERTY,DEFAULT_DIR); } File tpDir = new File(searchDir); if (tpDir.isDirectory()) { String [] tpFiles = tpDir.list(new java.io.FilenameFilter() { public boolean accept(File indir, String inName) { String lcName = inName.toLowerCase(); if (lcName.endsWith("ogg") || lcName.endsWith("mp3") || lcName.endsWith("wav")) return true; else return false; } }); DefaultListModel dm = new DefaultListModel(); curPlayListLength = tpFiles.length; for (int i=0; i<curPlayListLength; i++) dm.addElement(tpFiles[i]); filenamesList.setModel(dm); } } public void menuFileExitClick(ActionEvent e) { pBase.endThread(); System.exit(0); } public void menuHelpAboutClick(ActionEvent e) { AboutBox dlg = new AboutBox(this); Dimension dlgSize = dlg.getPreferredSize(); Dimension frmSize = getSize(); Point loc = getLocation(); dlg.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x, (frmSize.height - dlgSize.height) / 2 + loc.y); dlg.setModal(true); dlg.show(); } protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { menuFileExitClick(null); } } void playClick(ActionEvent e) { String fileToPlay = (String) filenamesList.getSelectedValue(); if (fileToPlay != null) { pBase.playFile(searchDir + System.getProperty("file.separator") + fileToPlay); } } void stopClick(ActionEvent e) { pBase.stop(); } void pauseClick(ActionEvent e) { pBase.pause(); } void prevClick(ActionEvent e) { pBase.stop(); filenamesList.setSelectedIndex( filenamesList.getSelectedIndex() - 1); playClick(e); } void nextClick(ActionEvent e) { pBase.stop(); filenamesList.setSelectedIndex( (filenamesList.getSelectedIndex() + 1) % curPlayListLength); playClick(e); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -