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

📄 tagsearch.java

📁 java平台的图形音乐播放器
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                    restrictedPlaylist = _playlist;
                }
            }
            Vector pI = restrictedPlaylist;
            restrictedPlaylist = new Vector();
            for (int a = 0; a < s.length; a++)
            {
                String currentS = s[a];
                int size = list.getModel().getSize();
                boolean[] remove = new boolean[size];
                for (int i = 0; i < size; i++)
                {
                    final int TITLE_SEARCH = 0;
                    final int ARTIST_SEARCH = 1;
                    final int ALBUM_SEARCH = 2;
                    final int FILENAME_SEARCH = 3;
                    TagInfo pli = ((PlaylistItem) pI.get(i)).getTagInfo();
                    remove[i] = false;
                    boolean found = false;
                    int searchType;
                    if (artist.isSelected())
                    {
                        searchType = ARTIST_SEARCH;
                    }
                    else if (album.isSelected())
                    {
                        searchType = ALBUM_SEARCH;
                    }
                    else if (title.isSelected())
                    {
                        searchType = TITLE_SEARCH;
                    }
                    else
                    {
                        searchType = -1;
                    }
                    for (int j = 0; j <= FILENAME_SEARCH; j++)
                    {
                        String listString = "";
                        if (pli == null)
                        {
                            if (searchType != -1)
                            {
                                break;
                            }
                            j = FILENAME_SEARCH;
                        }
                        else if (searchType != -1)
                        {
                            j = searchType;
                        }
                        switch (j)
                        {
                            case (TITLE_SEARCH):
                                if (pli.getTitle() != null) listString = pli.getTitle().toLowerCase();
                                break;
                            case (ARTIST_SEARCH):
                                if (pli.getArtist() != null) listString = pli.getArtist().toLowerCase();
                                break;
                            case (ALBUM_SEARCH):
                                if (pli.getAlbum() != null) listString = pli.getAlbum().toLowerCase();
                                break;
                            case (FILENAME_SEARCH):
                                String location = ((PlaylistItem) pI.get(i)).getLocation().toLowerCase();
                                listString = location.substring(location.lastIndexOf(sep) + 1, location.lastIndexOf("."));
                                break;
                        }
                        currentS = currentS.toLowerCase();
                        if (found = search(currentS, listString))
                        {
                            break;
                        }
                        if (searchType != -1)
                        {
                            break;
                        }
                    }
                    //if(found)foundAt[a] = i;
                    if (found && a == 0)
                    {
                        //todo new
                        newModel.addElement(getDisplayString((PlaylistItem) pI.get(i)));
                        restrictedPlaylist.add(pI.get(i));
                    }
                    if (!found && a != 0)
                    {
                        remove[i] = true;
                    }
                }
                //remove all unmatching items
                for (int x = size - 1; x >= 0; x--)
                {
                    if (remove[x])
                    {
                        newModel.remove(x);
                        restrictedPlaylist.remove(x);
                    }
                }
                pI = restrictedPlaylist;
                list.setModel(newModel);
            }
            list.setModel(newModel);
            lastSearch = searchField.getText();
        }
        if (list.getModel().getSize() > 0) list.setSelectedIndex(0);
    }

    /**
     * Searches to see if a particular string exists within another string
     *
     * @param pattern The string to search for
     * @param text The string in which to search for the pattern string
     * @return True if the pattern string exists in the text string
     */
    private boolean search(String pattern, String text)
    {
        int pStart = 0;
        int tStart = 0;
        char[] pChar = pattern.toCharArray();
        char[] tChar = text.toCharArray();
        while (pStart < pChar.length && tStart < tChar.length)
        {
            if (pChar[pStart] == tChar[tStart])
            {
                pStart++;
                tStart++;
            }
            else
            {
                pStart = 0;
                if (pChar[pStart] != tChar[tStart])
                {
                    tStart++;
                }
            }
        }
        return pStart == pChar.length;
    }

    /**
     * Calls the relavent methods in the player class to play a song.
     */
    private void playSong()
    {
        Playlist playlist = player.getPlaylist();
        player.pressStop();
        player.setCurrentSong((PlaylistItem) restrictedPlaylist.get(list.getSelectedIndex()));
        playlist.setCursor(playlist.getIndex((PlaylistItem) restrictedPlaylist.get(list.getSelectedIndex())));
        player.pressStart();
        dispose();
    }
    /**
     * Class to handle keyboard presses.
     */
    class KeyboardListener implements KeyListener
    {
        public void keyReleased(KeyEvent e)
        {
            if (e.getSource().equals(searchField))
            {
                if (e.getKeyCode() != KeyEvent.VK_DOWN && e.getKeyCode() != KeyEvent.VK_UP)
                {
                    searchList(searchField.getText()); // Search for current search string
                }
            }
        }

        public void keyTyped(KeyEvent e)
        {
            if (list.getSelectedIndex() != -1)
            {
                if (e.getKeyChar() == KeyEvent.VK_ENTER)
                {
                    playSong();
                }
            }
        }

        public void keyPressed(KeyEvent e)
        {
            int index = list.getSelectedIndex();
            if (e.getKeyCode() == KeyEvent.VK_DOWN && index < list.getModel().getSize() - 1)
            {
                //list.setSelectedIndex(index+1);
                JScrollBar vBar = scroll.getVerticalScrollBar();
                vBar.setValue(vBar.getValue() + vBar.getUnitIncrement() * 5);
            }
            else if (e.getKeyCode() == KeyEvent.VK_UP && index >= 0)
            {
                JScrollBar vBar = scroll.getVerticalScrollBar();
                vBar.setValue(vBar.getValue() - vBar.getUnitIncrement() * 5);
                //list.setSelectedIndex(index-1);
            }
        }
    }
    /**
     * Class to play a song if one is double-clicked on on the search list.
     */
    class ClickListener extends MouseAdapter
    {
        public void mouseClicked(MouseEvent e)
        {
            if (e.getClickCount() == 2 && list.getSelectedIndex() != -1)
            {
                playSong();
            }
        }
    }
    class RadioListener implements ChangeListener
    {
        public void stateChanged(ChangeEvent e)
        {
            searchList(searchField.getText());
        }
    }
}

⌨️ 快捷键说明

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