⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.java

📁 java+eclipse做的TTPlayer
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package com.hadeslee.yoyoplayer.player.ui;import com.hadeslee.yoyoplayer.player.BasicPlayer;import com.hadeslee.yoyoplayer.setting.AboutPanel;import com.hadeslee.yoyoplayer.util.Config;import com.hadeslee.yoyoplayer.util.DragMoveAdapter;import com.hadeslee.yoyoplayer.util.Loader;import com.hadeslee.yoyoplayer.util.Util;import com.sun.jna.examples.WindowUtils;import java.awt.AWTException;import java.awt.Dimension;import java.awt.Image;import java.awt.MenuItem;import java.awt.Point;import java.awt.PopupMenu;import java.awt.SystemTray;import java.awt.TrayIcon;import java.awt.Window;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.awt.event.WindowStateListener;import java.io.IOException;import java.net.URL;import java.util.Iterator;import java.util.List;import java.util.logging.Level;import java.util.logging.LogManager;import java.util.logging.Logger;import javax.swing.AbstractAction;import javax.swing.Action;import javax.swing.ImageIcon;import javax.swing.JComponent;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.KeyStroke;import javax.swing.SwingUtilities;import javax.swing.UIManager;/** * * @author hadeslee */public class Main extends JFrame implements Loader {    private Logger log = Logger.getLogger(Main.class.getName());    private static final long serialVersionUID = 20071214L;    private PlayerUI mp = null;    private JDialog eqWin = null;    private JDialog plWin = null;    private JDialog lrcWin = null;    private Config config = null;//    private RoundRectangle2D.Float rectPl,  rectLrc;    public Main() {        System.setProperty("sun.java2d.noddraw", "true");        Logger main = Logger.getLogger("com");        main.setLevel(Level.ALL);    }    public static void main(String[] args) {        try {            LogManager lm = LogManager.getLogManager();            lm.readConfiguration(Main.class.getResourceAsStream("/com/hadeslee/yoyoplayer/util/Log.properties"));        } catch (IOException ex) {            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);        } catch (SecurityException ex) {            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);        }        CheckThread th = new CheckThread();        th.setDaemon(true);        th.start();        final Main player = new Main();        SwingUtilities.invokeLater(new Runnable() {            public void run() {                player.loadUI();                player.loadJS();                player.loadPlaylist();                player.addSystemTray();                player.boot();            }            });    }    public void boot() {        if (config.isAutoPlayWhenStart()) {            if (config.isMaintainLastPlay()) {                mp.setLastRate(config.getLastRate());            }            mp.pressStart();        }    }    public void loadJS() {        BasicPlayer bplayer = new BasicPlayer();        List mixers = bplayer.getMixers();        config.setMixers(mixers);        for (Object obj : mixers) {            log.log(Level.INFO, "可用的MIXER:" + obj);        }        if (mixers != null) {            Iterator it = mixers.iterator();            String mixer = config.getAudioDevice();            log.log(Level.INFO, "Config.Mixer=" + mixer);            boolean mixerFound = false;            if ((mixer != null) && (mixer.length() > 0)) {                // Check if mixer is valid.                 while (it.hasNext()) {                    if (((String) it.next()).equals(mixer)) {                        bplayer.setMixerName(mixer);                        mixerFound = true;                        break;                    }                }            }            if (mixerFound == false) {                // Use first mixer available.                it = mixers.iterator();                if (it.hasNext()) {                    mixer = (String) it.next();                    bplayer.setMixerName(mixer);                    config.setAudioDevice(mixer);                }            }        }        // Register the front-end to low-level player events.        bplayer.addBasicPlayerListener(mp);        // Adds controls for front-end to low-level player.        mp.setController(bplayer);    }    public void loadPlaylist() {        mp.loadPlaylist();    }    public void loadUI() {        try {            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());            SwingUtilities.updateComponentTreeUI(this);        } catch (Exception ex) {        }        this.setResizable(false);        config = Config.getConfig();//        doTest();        config.setTopParent(this);        setTitle(Config.TITLETEXT);        ClassLoader cl = this.getClass().getClassLoader();        URL iconURL = cl.getResource("com/hadeslee/yoyoplayer/pic/player/icon.png");        if (iconURL != null) {            ImageIcon jlguiIcon = new ImageIcon(iconURL);            setIconImage(jlguiIcon.getImage());            config.setIconParent(jlguiIcon);        }        setUndecorated(true);        mp = new PlayerUI();        mp.loadUI(this, config);        setContentPane(mp);        pack();        config.setPlayer(mp);        eqWin = new JDialog(this);        eqWin.setContentPane(mp.getEqualizerUI());        eqWin.setUndecorated(true);        eqWin.pack();        eqWin.setVisible(false);        config.setEqWindow(eqWin);        plWin = new JDialog(this);        mp.getPlaylistUI().loadUI(plWin, config);        plWin.setContentPane(mp.getPlaylistUI());        plWin.setMinimumSize(mp.getPlaylistUI().getMinimumSize());        plWin.setUndecorated(true);        plWin.pack();        plWin.setVisible(false);        config.setPlWindow(plWin);        lrcWin = new JDialog(this);        mp.getLyricUI().loadUI(lrcWin, config);        lrcWin.setContentPane(mp.getLyricUI());        lrcWin.setMinimumSize(mp.getLyricUI().getMinimumSize());        lrcWin.setUndecorated(true);        lrcWin.pack();        lrcWin.setVisible(false);        config.setLrcWindow(lrcWin);        if (config.isTransparency()) {            WindowUtils.setWindowTransparent(lrcWin, true);            mp.getLyricUI().setBorderEnabled(config.isShowLrcBorder());        }        // Window listener        addWindowListener(new WindowAdapter() {            public void windowClosing(WindowEvent e) {                // Closing window (Alt+F4 under Win32)                mp.closePlayer();            }        });        addMouseMoveListener();        // Keyboard shortcut        setKeyBoardShortcut();        // Display front-end        setLocation(config.getXLocation(), config.getYLocation());        setVisible(true);        showOtherWindow();        if (config.isStartAutoMinimize()) {            minimize();        }    }    private void addMouseMoveListener() {        DragMoveAdapter dm1 = new DragMoveAdapter(eqWin, config);        mp.getEqualizerUI().addMouseListener(dm1);        mp.getEqualizerUI().addMouseMotionListener(dm1);        DragMoveAdapter dm = new DragMoveAdapter(this, config);        mp.addMouseListener(dm);        mp.addMouseMotionListener(dm);    }    private void showOtherWindow() {        if (config.getLrcSize() != null) {            lrcWin.setAlwaysOnTop(config.isLyricTopShow());            lrcWin.setSize(config.getLrcSize());        }        if (config.getPlSize() != null) {            plWin.setSize(config.getPlSize());        }        if (config.isShowEq()) {            Point p = config.getEqLocation();            if (p == null) {                p = new Point(config.getXLocation(), config.getYLocation() + this.getHeight());            }            eqWin.setLocation(p);            eqWin.setVisible(true);        }        if (config.isShowPlayList()) {            Point p = config.getPlLocation();            if (p == null) {                p = new Point(config.getXLocation(), config.getYLocation() + this.getHeight() + eqWin.getHeight());            }            plWin.setLocation(p);            plWin.setVisible(true);        }        if (config.isShowLrc()) {            Point p = config.getLrcLocation();            if (p == null) {                p = new Point(config.getXLocation() + this.getWidth(), config.getYLocation());            }            lrcWin.setLocation(p);            lrcWin.setVisible(true);            mp.getLyricUI().start();        }    }    private void addWindowStateListener() {        this.addWindowStateListener(new WindowStateListener() {            public void windowStateChanged(WindowEvent e) {                int state = e.getNewState();                if (state == JFrame.ICONIFIED) {                    eqWin.setVisible(false);                    plWin.setVisible(false);                    if (config.isShowLrc() && config.isLyricTopShow()) {                        lrcWin.setVisible(true);                    } else {                        lrcWin.setVisible(false);                    }                } else if (state == JFrame.NORMAL) {                    if (config.isShowEq()) {                        eqWin.setVisible(true);                    }                    if (config.isShowPlayList()) {                        plWin.setVisible(true);                    }                    if (config.isShowLrc()) {                        lrcWin.setVisible(true);                    }                }            }        });    }    /**     * 设置键盘快捷键     */    public void setKeyBoardShortcut() {        //B表示下一首歌曲        KeyStroke nextStroke = KeyStroke.getKeyStroke(KeyEvent.VK_B, 0, true);        //空格表示播放和暂停        KeyStroke pauseStroke = KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0, true);        //C表示播放        KeyStroke playStroke = KeyStroke.getKeyStroke(KeyEvent.VK_C, 0, true);        //V表示停止        KeyStroke stopStroke = KeyStroke.getKeyStroke(KeyEvent.VK_V, 0, true);        //三个快捷键,显示三个窗体        KeyStroke eqStroke = KeyStroke.getKeyStroke(KeyEvent.VK_F3, 0, true);        KeyStroke plStroke = KeyStroke.getKeyStroke(KeyEvent.VK_F4, 0, true);        KeyStroke lrcStroke = KeyStroke.getKeyStroke(KeyEvent.VK_F2, 0, true);        String nextID = "NEXT";        String pauseID = "PAUSE";        String playID = "PLAY";        String stopID = "STOP";        String eqID = "EQ";        String plID = "PL";

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -