📄 util.java
字号:
/** * 一个简便地获取字符串高度的方法 * @param s 字符串 * @param g 画笔 * @return 高度 */ public static int getStringHeight(String s, Graphics g) { return (int) g.getFontMetrics().getStringBounds(s, g).getHeight(); } /** * 一个简便地获取字符串宽度的方法 * @param s 字符串 * @param g 画笔 * @return 宽度 */ public static int getStringWidth(String s, Graphics g) { return (int) g.getFontMetrics().getStringBounds(s, g).getWidth(); } /** * 自定义的画字符串的方法,从字符串的左上角开始画 * 不是JAVA的从左下角开始的画法 * @param g 画笔 * @param s 字符串 * @param x X坐标 * @param y Y坐标 */ public static void drawString(Graphics g, String s, int x, int y) { FontMetrics fm = g.getFontMetrics(); int asc = fm.getAscent(); g.drawString(s, x, y + asc); } /** * 一个简便的让字符串对于某点居中的画法 * @param g 画笔 * @param s 字符串 * @param x X坐标 * @param y Y坐标 */ public static void drawStringCenter(Graphics g, String s, int x, int y) { FontMetrics fm = g.getFontMetrics(); int asc = fm.getAscent(); int width = getStringWidth(s, g); g.drawString(s, x - width / 2, y + asc); } /** * 一个便捷的方法,画字符串右对齐的方法 * @param g 画笔 * @param s 字符串 * @param x 右对齐的X座标 * @param y 右对齐的Y座标 */ public static void drawStringRight(Graphics g, String s, int x, int y) { FontMetrics fm = g.getFontMetrics(); int asc = fm.getAscent(); int width = getStringWidth(s, g); g.drawString(s, x - width, y + asc); } /** * 得到文件的格式 * @param f 文件 * @return 格式 */ public static String getType(File f) { String name = f.getName(); return name.substring(name.lastIndexOf(".") + 1); } /** * 根据文件名得到歌曲的名字 * @param f 文件名 * @return 歌曲名 */ public static String getSongName(File f) { String name = f.getName(); name = name.substring(0, name.lastIndexOf(".")); return name; } /** * 根据文件名得到歌曲的名字 * @param name 文件名 * @return 歌曲名 */ public static String getSongName(String name) { try { int index = name.lastIndexOf(File.separator); name = name.substring(index + 1, name.lastIndexOf(".")); return name; } catch (Exception exe) { return name; } } /** * 根据歌曲的信息去下载歌词内容 * @param fileName 文件本名 * @param info 歌曲信息 * @return 歌词内容 */ public static String getLyric(PlayListItem info) throws IOException { log.log(Level.INFO, "进来找歌词了"); String ly = getLyricBaidu(info); if (ly != null) { log.log(Level.INFO, "百度上搜索到了..."); } return ly;// if (ly == null) {// log.log(Level.INFO, "JPWY没有搜到,再去百度搜");// ly = getLyricBaidu(info);// log.log(Level.INFO, ly);// return ly;// } else {// log.log(Level.INFO, "JPWY搜到了");// log.log(Level.INFO, ly);// return ly;// } }// /**// * 根据地址去取得歌词的内容// * 此方法专用于JPWY的内容// * @param url 地址// * @return 内容// * @throws java.io.IOException// */// private static String getJPWY_Lyric(String url) throws IOException {// HttpClient http = new HttpClient();// Config config = Config.getConfig();// if (config.isUseProxy()) {// if (config.getProxyUserName() != null && config.getProxyPwd() != null) {// http.getState().setProxyCredentials(// new AuthScope(config.getProxyHost(), Integer.parseInt(config.getProxyPort())),// new UsernamePasswordCredentials(config.getProxyUserName(), config.getProxyPwd()));// }// http.getHostConfiguration().setProxy(config.getProxyHost(),// Integer.parseInt(config.getProxyPort()));// }// http.getParams().setContentCharset("GBK");// url = getJPWY_Lyric_URL(url);// GetMethod get = new GetMethod(url);// get.addRequestHeader("Host", "www.jpwy.net");// get.addRequestHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9");// get.addRequestHeader("Accept", "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5");// get.addRequestHeader("Accept-Language", "zh-cn,zh;q=0.5");// get.addRequestHeader("Keep-Alive", "300");// get.addRequestHeader("Connection", "keep-alive");// get.addRequestHeader("Referer", "http://www.jpwy.net/gc/");// int i = http.executeMethod(get);// String s = getString(get.getResponseBodyAsStream());// System.out.println("s=" + s);// get.releaseConnection();// return s;// }// /**// * 得到精品网页里面更改过后的地址解析出来的LRC地址// * 2008年4月3日更新// * @param url 下载地址// * @return LRC地址// * @throws java.io.IOException// */// private static String getJPWY_Lyric_URL(String url) throws IOException {//// String temp="action=\"http://fanwen.jpwy.net/gc/down.php?id=1256&ps=15&ti=%B7%C9%CE%E8&key=9dbd5a10b4a9bdfcd4e3d7743bc19f2d1207207778\" method";// HttpClient http = new HttpClient();// Config config = Config.getConfig();// if (config.isUseProxy()) {// if (config.getProxyUserName() != null && config.getProxyPwd() != null) {// http.getState().setProxyCredentials(// new AuthScope(config.getProxyHost(), Integer.parseInt(config.getProxyPort())),// new UsernamePasswordCredentials(config.getProxyUserName(), config.getProxyPwd()));// }// http.getHostConfiguration().setProxy(config.getProxyHost(),// Integer.parseInt(config.getProxyPort()));// }// http.getParams().setContentCharset("GBK");// GetMethod get = new GetMethod("http://www.jpwy.net/gc/" + url);// get.addRequestHeader("Host", "www.jpwy.net");// get.addRequestHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9");// get.addRequestHeader("Accept", "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5");// get.addRequestHeader("Accept-Language", "zh-cn,zh;q=0.5");// get.addRequestHeader("Keep-Alive", "300");// get.addRequestHeader("Connection", "keep-alive");// get.addRequestHeader("Referer", "http://www.jpwy.net/gc/");// int i = http.executeMethod(get);// String content = getString(get.getResponseBodyAsStream());// get.releaseConnection();// Matcher m = Pattern.compile("(?<=action=\").*?(?=\" method)").matcher(content);// if (m.find()) {// return m.group();// }// return content;// }// /**// * 从一个网页源码里面分析出歌词的下载地址// * @param content 网页源码// * @return 下载地址// */// private static List<String> parseURLContent(String content) {// Matcher m = Pattern.compile("(?<=list.gif width=16 height=16></A></TD><TD align=middle><A href=\").*?(?=\" target=_blank\\>\\<img border=0 src=image\\/lrc.gif>)").matcher(content);//// Matcher m = Pattern.compile("(?<=list.gif width=16 height=16></A></TD><TD align=middle><A href=\").*?(?=\"\\>\\<img border=0 src=image\\/lrc.gif>)").matcher(content);// List<String> list = new ArrayList<String>();// while (m.find()) {// String url = m.group();// list.add(url);// log.log(Level.INFO, "下载歌词的地址是:" + url);// }// return list;// }// private static List<SearchResult> parseURLContentToSearchResult(String content) {// Matcher m = Pattern.compile("(?<=<TD class=r1>).*?(?=src=image/lrc.gif></A></TD></TR>)").matcher(content);// List<SearchResult> list = new ArrayList<SearchResult>();// while (m.find()) {// String s = m.group();// System.out.println("searchResult=" + s);// SearchResult result = parseSearchResult(s);// log.log(Level.INFO, String.valueOf(result));// if (result != null) {// list.add(result);// }// }// return list;// }// private static SearchResult parseSearchResult(String content) {// String title = null;// String artist = null;// final StringBuilder url = new StringBuilder();// Matcher m = Pattern.compile("(?<=target=_blank>).*?(?=</A></TD><TD> </TD>)").matcher(content);// if (m.find()) {// title = m.group();// }// m = Pattern.compile("(?<=singer=([%[0-9a-fA-F]{2}|[\\w\\p{Punct}]]){0,100}\">).*?(?=</A></TD><TD>)").matcher(content);// if (m.find()) {// artist = m.group();// }// m = Pattern.compile("(?<=list.gif width=16 height=16></A></TD><TD align=middle><A href=\").*?(?=\" target=_blank\\>\\<img border=0)").matcher(content);// if (m.find()) {// String findURl = m.group();// log.log(Level.INFO, "findURL=" + findURl);// url.append(findURl);// } else {// log.log(Level.INFO, "没有匹配的findURL");// }// log.log(Level.INFO, "title=" + title + ",artist=" + artist);// if (url.length() == 0) {// return null;// } else {// return new SearchResult(artist, title, new SearchResult.Task() {//// public String getLyricContent() throws IOException {// return Util.getJPWY_Lyric(url.toString());// }// });// }// }// /**// * 根据歌名分析去得查询到的网页内容// * 并原封不动把网页内容返回做为分析的数据// * @param artist 歌手名,可能为空// * @param title 歌曲名,不能为空// * @throws java.io.IOException// */// private static String getSearchContent(String artist, String title) throws IOException {// HttpClient http = new HttpClient();// Config config = Config.getConfig();// if (config.isUseProxy()) {// log.log(Level.INFO, "使用了代理了:host:" + config.getProxyHost() + ",port:" + config.getProxyPort());// if (config.getProxyUserName() != null && config.getProxyPwd() != null &&// !config.getProxyUserName().equals("") &&// !config.getProxyPwd().equals("")) {//// http.getState().setProxyCredentials(// new AuthScope(config.getProxyHost(), Integer.parseInt(config.getProxyPort())),// new UsernamePasswordCredentials(config.getProxyUserName(), config.getProxyPwd()));// }// http.getHostConfiguration().setProxy(config.getProxyHost(),// Integer.parseInt(config.getProxyPort()));// }// http.getParams().setContentCharset("GBK");// PostMethod get = postMethod();// if (artist == null || artist.equals("")) {// get.addParameter("song", title);// } else {//否则就把两个都加上,看能不能搜到//// get.addParameter("singer", artist);// get.addParameter("song", title);// }// int i = http.executeMethod(get);// String s = getString(get.getResponseBodyAsStream());// get.releaseConnection();// return s;// } /** * 根据歌名分析去得查询到的网页内容,也可能会为 * 但尽最大可能去搜索到匹配的内容 * @param info 歌曲信息 * @return 网页内容 * @throws java.io.IOException */// private static String getSearchContent(PlayListItem info) throws IOException {// String urlContent = null;// String song = info.getTitle();// String singer = info.getArtist();// HttpClient http = new HttpClient();// Config config = Config.getConfig();// if (config.isUseProxy()) {// if (config.getProxyUserName() != null && config.getProxyPwd() != null) {// http.getState().setProxyCredentials(// new AuthScope(config.getProxyHost(), Integer.parseInt(config.getProxyPort())),// new UsernamePasswordCredentials(config.getProxyUserName(), config.getProxyPwd()));// }// http.getHostConfiguration().setProxy(config.getProxyHost(),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -