📄 playlistui.java
字号:
menu.add(Config.getResource("playlist.rename.artist.songName.ext")).addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { PlayListItem item = currentPlayList.getItemAt(rightIndex); File file = new File(item.getLocation()); File rename = new File(file.getParent(), item.getArtist() + " - " + item.getTitle() + "." + Util.getType(file)); boolean b = file.renameTo(rename); if (b) { item.setLocation(rename.getPath()); } log.log(Level.INFO, "把文件:" + file + "重命名为:" + rename); log.log(Level.INFO, "命名成功了吗?" + b); } }); //歌曲名 - 歌手.扩展名 menu.add(Config.getResource("playlist.rename.songName.aritst.ext")).addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { PlayListItem item = currentPlayList.getItemAt(rightIndex); File file = new File(item.getLocation()); File rename = new File(file.getParent(), item.getTitle() + " - " + item.getArtist() + "." + Util.getType(file)); boolean b = file.renameTo(rename); if (b) { item.setLocation(rename.getPath()); } log.log(Level.INFO, "把文件:" + file + "重命名为:" + rename); log.log(Level.INFO, "命名成功了吗?" + b); } }); return menu; } /** * 得到添加菜单,里面已经构造好了子菜单项 * @return 菜单 */ private JMenu createAddMenu() { JMenu menu = new JMenu(Config.getResource("playlist.add")); //添加文件 menu.add(Config.getResource("playlist.add.file")).addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { JFileChooser jf = Util.getFileChooser(new FileNameFilter(Config.EXTS, Config.getResource("playlist.filechooser.name"), true), JFileChooser.FILES_ONLY); int i = jf.showOpenDialog(config.getPlWindow()); if (i == JFileChooser.APPROVE_OPTION) { File f = jf.getSelectedFile(); PlayListItem item = new PlayListItem(Util.getSongName(f), f.getPath(), -1, true); if (rightIndex == -1) { currentPlayList.appendItem(item); } else { currentPlayList.addItemAt(item, rightIndex); } rightList.setListData(currentPlayList.getAllItems()); } } }); //添加文件夹 menu.add(Config.getResource("playlist.add.dir")).addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { JFileChooser jf = Util.getFileChooser(new FileNameFilter(Config.EXTS, Config.getResource("playlist.filechooser.name"), true), JFileChooser.DIRECTORIES_ONLY); int i = jf.showOpenDialog(config.getPlWindow()); if (i == JFileChooser.APPROVE_OPTION) { File f = jf.getSelectedFile(); if (f.isDirectory()) { File[] fs = f.listFiles(new FileNameFilter(Config.EXTS, Config.getResource("playlist.filechooser.name"), false)); for (File file : fs) { PlayListItem item = new PlayListItem(Util.getSongName(file), file.getPath(), -1, true); if (rightIndex == -1) { currentPlayList.appendItem(item); } else { currentPlayList.addItemAt(item, rightIndex); } } rightList.setListData(currentPlayList.getAllItems()); } } } }); //添加网络地址 menu.add(Config.getResource("playlist.add.url")).addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { String s = JOptionPane.showInputDialog(config.getPlWindow(), Config.getResource("playlist.add.inputurl")); if (s != null) { if (Config.startWithProtocol(s)) { PlayListItem item = new PlayListItem(s, s, -1, false); if (rightIndex == -1) { currentPlayList.appendItem(item); } else { currentPlayList.addItemAt(item, rightIndex); } rightList.setListData(currentPlayList.getAllItems()); } else { JOptionPane.showMessageDialog(config.getPlWindow(), Config.getResource("playlist.add.invalidUrl")); } } } }); return menu; } /** * 创建删除相关的菜单以及菜单项 * @return 菜单 */ private JMenu createDeleteMenu() { JMenu menu = new JMenu(Config.getResource("playlist.delete")); if (rightIndex == -1) { menu.setEnabled(false); return menu; } //删除当前项 menu.add(Config.getResource("playlist.delete.select")).addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { Object[] objs = rightList.getSelectedValues(); for (Object obj : objs) { currentPlayList.removeItem((PlayListItem) obj); } rightList.setListData(currentPlayList.getAllItems()); rightList.setSelectedIndex(rightIndex); } }); //删除重复项 menu.add(Config.getResource("playlist.delete.repeat")).addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { Vector<PlayListItem> vs = currentPlayList.getAllItems(); for (int i = 0; i < vs.size() - 1; i++) { PlayListItem item1 = vs.get(i); for (int j = i + 1; j < vs.size(); j++) { PlayListItem item2 = vs.get(j); if (item1.getLocation().equals(item2.getLocation())) { vs.remove(item2); j--; } } } rightList.setListData(vs); } }); //删除错误文件 menu.add(Config.getResource("playlist.delete.error")).addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { Vector<PlayListItem> vs = currentPlayList.getAllItems(); List<PlayListItem> temp = new ArrayList<PlayListItem>(); for (PlayListItem item : vs) { //如果是文件,则文件不存在或者文件格式不合法则为错误文件 if (item.isFile) { File f = new File(item.getLocation()); if (f.exists()) { if (item.getFormattedLength().equals("-1")) { temp.add(item); } } else { temp.add(item); } } else {//如果是网络文件则无法判断了,留以后实现 } } vs.removeAll(temp); rightList.setListData(vs); } }); //清空列表 menu.add(Config.getResource("playlist.delete.all")).addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { currentPlayList.removeAllItems(); rightList.setListData(currentPlayList.getAllItems()); } }); //物理删除 JMenuItem delete = new JMenuItem(Config.getResource("playlist.delete.deletefile")); menu.add(delete); delete.setEnabled(!config.isDisableDelete()); delete.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { if (JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(config.getPlWindow(), Config.getResource("playlist.deletefile.confirm"), Config.getResource("confirm"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE)) { Object[] objs = rightList.getSelectedValues(); for (Object obj : objs) { PlayListItem pl = (PlayListItem) obj; if (pl.isFile()) { File f = new File(pl.getLocation()); boolean b = f.delete(); if (b) { currentPlayList.removeItem(pl); repaint(); } } } } } }); return menu; } private JMenu createSearchMenu() { //先简单实现,有时间或者有机会的时候, //可以再实现的完美一些,比如继续查找,混合查找等等 JMenu menu = new JMenu(Config.getResource("playlist.search")); //快速查找 menu.add(Config.getResource("playlist.search.fileName")).addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { String s = JOptionPane.showInputDialog(config.getPlWindow(), Config.getResource("playlist.search.inputFileName")); if (s != null) { s = s.trim(); for (PlayListItem item : currentPlayList.getAllItems()) { String name = Util.getSongName(item.getLocation()); if (name.contains(s)) { rightList.setSelectedValue(item, true); } } } } }); menu.add(Config.getResource("playlist.search.title")).addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { String s = JOptionPane.showInputDialog(config.getPlWindow(), Config.getResource("playlist.search.inputTitle")); if (s != null) { s = s.trim(); for (PlayListItem item : currentPlayList.getAllItems()) { String name = item.getTitle(); if (name.contains(s)) { rightList.setSelectedValue(item, true); } } } } }); menu.add(Config.getResource("playlist.search.artist")).addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { String s = JOptionPane.showInputDialog(config.getPlWindow(), Config.getResource("playlist.search.inputArtist")); if (s != null) { s = s.trim(); for (PlayListItem item : currentPlayList.getAllItems()) { String name = item.getArtist(); if (name.contains(s)) { rightList.setSelectedValue(item, true); } } } } }); menu.add(Config.getResource("playlist.search.album")).addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { String s = JOptionPane.showInputDialog(config.getPlWindow(), Config.getResource("playlist.search.inputAlbum")); if (s != null) { s = s.trim(); for (PlayListItem item : currentPlayList.getAllItems()) { String name = item.getAlbum(); if (name.contains(s)) { rightList.setSelectedValue(item, true); } } } } }); return menu; } private JMenu createSortMenu() { JMenu menu = new JMenu(Config.getResource("playlist.sort")); //按歌手 menu.add(Config.getResource("playlist.sort.artist")).addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { Collections.sort(currentPlayList.getAllItems(), new Comparator<PlayListItem>() { public int compare(PlayListItem o1, PlayListItem o2) { String s1 = o1.getArtist() == null ? "" : o1.getArtist(); String s2 = o2.getArtist() == null ? "" : o2.getArtist(); return Collator.getInstance(Locale.CHINESE).compare(s1, s2); } }); rightList.setListData(currentPlayList.getAllItems()); } }); //按标题 menu.add(Config.getResource("playlist.sort.title")).addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { Collections.sort(currentPlayList.getAllItems(), new Comparator<PlayListItem>() { public int compare(PlayListItem o1, PlayListItem o2) { String s1 = o1.getTitle() == null ? "" : o1.getTitle(); String s2 = o2.getTitle() == null ? "" : o2.getTitle(); return Collator.getInstance(Locale.CHINESE).compare(s1, s2); } }); rightList.setListData(currentPlayList.getAllItems()); } }); //按专辑 menu.add(Config.getResource("playlist.sort.album")).addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { Collections.sort(currentPlayList.getAllItems(), new Comparator<PlayListItem>() { public int compare(PlayListItem o1, PlayListItem o2) { String s1 = o1.getAlbum() == null ? "" : o1.getAlbum(); String s2 = o2.getAlbum() == null ? "" : o2.getAlbum(); return Collator.getInstance(Locale.CHINESE).compare(s1, s2); } }); rightList.setListData(currentPlayList.getAllItems()); } }); //按文件名 menu.add(Config.getResource("playlist.sort.fileName")).addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { Collections.sort(currentPlayList.getAllItems(), new Comparator<PlayListItem>() { public int compare(PlayListItem o1, PlayListItem o2) { String s1 = o1.getName() == null ? "" : o1.getName(); String s2 = o2.getName() == null ? "" : o2.getName(); return Collator.getInstance(Locale.CHINESE).compare(s1, s2); } }); rightList.setListData(currentPlayList.getAllItems()); } }); //按歌曲长度 menu.add(Config.getResource("playlist.sort.length")).addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { Collections.sort(currentPlayList.getAllItems(), new Comparator<PlayListItem>() { public int compare(PlayListItem o1, PlayListItem o2) { return (int) (o1.getLength() - o2.getLength()); } }); rightList.setListData(currentPlayList.getAllItems()); } }); menu.addSeparator(); //随机乱序 menu.add(Config.getResource("playlist.sort.random")).addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -