standaloneplayer.java

来自「java平台的图形音乐播放器」· Java 代码 · 共 501 行 · 第 1/2 页

JAVA
501
字号
                config.setPlaylistEnabled(false);
            }
        }
        if (showEqualizer != null)
        {
            if (showEqualizer.equalsIgnoreCase("true"))
            {
                config.setEqualizerEnabled(true);
            }
            else
            {
                config.setEqualizerEnabled(false);
            }
        }
        if (config.isPlaylistEnabled()) eqFactor = 2;
        else eqFactor = 1;
        setTitle(Skin.TITLETEXT);
        ClassLoader cl = this.getClass().getClassLoader();
        URL iconURL = cl.getResource("javazoom/jlgui/player/amp/jlguiicon.gif");
        if (iconURL != null)
        {
            ImageIcon jlguiIcon = new ImageIcon(iconURL);
            setIconImage(jlguiIcon.getImage());
            config.setIconParent(jlguiIcon);
        }
        setUndecorated(true);
        mp = new PlayerUI();
        if ((showDsp != null) && (showDsp.equalsIgnoreCase("false")))
        {
            mp.getSkin().setDspEnabled(false);
        }
        if (skinPath != null)
        {
            mp.getSkin().setPath(skinPath);
        }
        mp.getSkin().setSkinVersion(skinVersion);
        mp.loadUI(this);
        setContentPane(mp);
        setSize(new Dimension(mp.getSkin().getMainWidth(), mp.getSkin().getMainHeight()));
        eqWin = new JWindow(this);
        eqWin.setContentPane(mp.getEqualizerUI());
        eqWin.setSize(new Dimension(mp.getSkin().getMainWidth(), mp.getSkin().getMainHeight()));
        eqWin.setVisible(false);
        plWin = new JWindow(this);
        plWin.setContentPane(mp.getPlaylistUI());
        plWin.setSize(new Dimension(mp.getSkin().getMainWidth(), mp.getSkin().getMainHeight()));
        plWin.setVisible(false);
        // Window listener
        addWindowListener(new WindowAdapter()
        {
            public void windowClosing(WindowEvent e)
            {
                // Closing window (Alt+F4 under Win32)
                close();
            }
        });
        // Keyboard shortcut
        setKeyBoardShortcut();
        // Display front-end
        setLocation(config.getXLocation(), config.getYLocation());
        setVisible(true);
        if (config.isPlaylistEnabled()) plWin.setVisible(true);
        if (config.isEqualizerEnabled()) eqWin.setVisible(true);
    }

    /**
     * Install keyboard shortcuts.
     */
    public void setKeyBoardShortcut()
    {
        KeyStroke jKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_J, 0, false);
        KeyStroke ctrlPKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_P, KeyEvent.CTRL_MASK, false);
        KeyStroke altSKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_S, KeyEvent.ALT_MASK, false);
        KeyStroke vKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_V, 0, false);
        String searchID = "TAGSEARCH";
        String preferenceID = "PREFERENCES";
        String skinbrowserID = "SKINBROWSER";
        String stopplayerID = "STOPPLAYER";
        Action searchAction = new AbstractAction()
        {
            public void actionPerformed(ActionEvent e)
            {
                if (mp != null) mp.processJumpToFile(e.getModifiers());
            }
        };
        Action preferencesAction = new AbstractAction()
        {
            public void actionPerformed(ActionEvent e)
            {
                if (mp != null) mp.processPreferences(e.getModifiers());
            }
        };
        Action skinbrowserAction = new AbstractAction()
        {
            public void actionPerformed(ActionEvent e)
            {
                if (mp != null) mp.processSkinBrowser(e.getModifiers());
            }
        };
        Action stopplayerAction = new AbstractAction()
        {
            public void actionPerformed(ActionEvent e)
            {
                if (mp != null) mp.processStop(MouseEvent.BUTTON1_MASK);
            }
        };
        setKeyboardAction(searchID, jKeyStroke, searchAction);
        setKeyboardAction(preferenceID, ctrlPKeyStroke, preferencesAction);
        setKeyboardAction(skinbrowserID, altSKeyStroke, skinbrowserAction);
        setKeyboardAction(stopplayerID, vKeyStroke, stopplayerAction);
    }

    /**
     * Set keyboard key shortcut for the whole player.
     * @param id
     * @param key
     * @param action
     */
    public void setKeyboardAction(String id, KeyStroke key, Action action)
    {
        mp.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(key, id);
        mp.getActionMap().put(id, action);
        mp.getPlaylistUI().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(key, id);
        mp.getPlaylistUI().getActionMap().put(id, action);
        mp.getEqualizerUI().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(key, id);
        mp.getEqualizerUI().getActionMap().put(id, action);
    }

    public void loaded()
    {
        DragAdapter dragAdapter = new DragAdapter(this);
        mp.getSkin().getAcTitleBar().addMouseListener(dragAdapter);
        mp.getSkin().getAcTitleBar().addMouseMotionListener(dragAdapter);
    }

    public void close()
    {
        log.info("Close player");
        config.setLocation(getLocation().x, getLocation().y);
        config.save();
        dispose();
        exit(0);
    }

    /* (non-Javadoc)
     * @see javazoom.jlgui.player.amp.skin.Loader#togglePlaylist(boolean)
     */
    public void togglePlaylist(boolean enabled)
    {
        if (plWin != null)
        {
            if (enabled)
            {
                if (config.isEqualizerEnabled())
                {
                    eqFactor = 2;
                    eqWin.setLocation(getLocation().x, getLocation().y + mp.getSkin().getMainHeight() * eqFactor);
                }
                plWin.setVisible(true);
            }
            else
            {
                plWin.setVisible(false);
                if (config.isEqualizerEnabled())
                {
                    eqFactor = 1;
                    eqWin.setLocation(getLocation().x, getLocation().y + mp.getSkin().getMainHeight() * eqFactor);
                }
            }
        }
    }

    public void toggleEqualizer(boolean enabled)
    {
        if (eqWin != null)
        {
            if (enabled)
            {
                if (config.isPlaylistEnabled()) eqFactor = 2;
                else eqFactor = 1;
                eqWin.setLocation(getLocation().x, getLocation().y + mp.getSkin().getMainHeight() * eqFactor);
                eqWin.setVisible(true);
            }
            else
            {
                eqWin.setVisible(false);
            }
        }
    }

    public void minimize()
    {
        setState(JFrame.ICONIFIED);
    }

    public void setLocation(int x, int y)
    {
        super.setLocation(x, y);
        if (plWin != null)
        {
            plWin.setLocation(getLocation().x, getLocation().y + getHeight());
        }
        if (eqWin != null)
        {
            eqWin.setLocation(getLocation().x, getLocation().y + eqFactor * getHeight());
        }
    }

    public Point getLocation()
    {
        return super.getLocation();
    }

    /**
     * Kills the player.
     * @param status
     */
    public void exit(int status)
    {
        System.exit(status);
    }

    /**
     * Displays usage.
     * @param msg
     */
    protected static void usage(String msg)
    {
        System.out.println(Skin.TITLETEXT + " : " + msg);
        System.out.println("");
        System.out.println(Skin.TITLETEXT + " : Usage");
        System.out.println("              java javazoom.jlgui.player.amp.Player [-skin skinFilename] [-song audioFilename] [-start] [-showplaylist] [-showequalizer] [-disabledsp] [-init configFilename] [-v skinversion]");
        System.out.println("");
        System.out.println("              skinFilename   : Filename or URL to a Winamp Skin2.x");
        System.out.println("              audioFilename  : Filename or URL to initial song or playlist");
        System.out.println("              start          : Starts playing song (from the playlist)");
        System.out.println("              showplaylist   : Show playlist");
        System.out.println("              showequalizer  : Show equalizer");
        System.out.println("              disabledsp     : Disable spectrum/time visual");
        System.out.println("");
        System.out.println("              Advanced parameters :");
        System.out.println("              skinversion    : 1 or 2 (default 1)");
        System.out.println("              configFilename : Filename or URL to jlGui initial configuration (playlist,skin,parameters ...)");
        System.out.println("                               Initial configuration won't be overriden by -skin and -song arguments");
        System.out.println("");
        System.out.println("Homepage    : http://www.javazoom.net");
        System.exit(0);
    }
}

⌨️ 快捷键说明

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