📄 util.java
字号:
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.baidu.com/s?wd=" + URLEncoder.encode("filetype:lrc " + title + "-" + artist, "GBK")); get.addRequestHeader("Host", "www.baidu.com"); get.addRequestHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11"); 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("Referer", "http://www.baidu.com/"); get.addRequestHeader("Connection", "keep-alive"); int i = http.executeMethod(get); String temp = getString(get.getResponseBodyAsStream()); get.releaseConnection();// System.out.println("TEMP="+temp); list.addAll(parseSearchResult(temp)); } catch (IOException ex) { } return list; } /** * 从一个int值得到它所代表的字节数组 * @param i 值 * @return 字节数组 */ public static byte[] getBytesFromInt(int i) { byte[] data = new byte[4]; data[0] = (byte) (i & 0xff); data[1] = (byte) ((i >> 8) & 0xff); data[2] = (byte) ((i >> 16) & 0xff); data[3] = (byte) ((i >> 24) & 0xff); return data; } /** * 把字符串转成系统预设的编码 * @param source * @return */ public static String convertString(String source) { return convertString(source, Config.getConfig().getEncoding()); } /** * 一个简便的方法,把一个字符串的转成另一种字符串 * @param source 源字符串 * @param encoding 编码 * @return 新的字符串 */ public static String convertString(String source, String encoding) { try { byte[] data = source.getBytes("ISO8859-1"); return new String(data, encoding); } catch (UnsupportedEncodingException ex) { return source; } } /** * 转码的一个方便的方法 * @param source 要转的字符串 * @param sourceEnc 字符串原来的编码 * @param distEnc 要转成的编码 * @return 转后的字符串 */ public static String convertString(String source, String sourceEnc, String distEnc) { try { byte[] data = source.getBytes(sourceEnc); return new String(data, distEnc); } catch (UnsupportedEncodingException ex) { return source; } } /** * 从传进来的数得到这个数组 * 组成的整型的大小 * @param data 数组 * @return 整型 */ public static int getInt(byte[] data) { if (data.length != 4) { throw new IllegalArgumentException("数组长度非法,要长度为4!"); } return (data[0] & 0xff) | ((data[1] & 0xff) << 8) | ((data[2] & 0xff) << 16) | ((data[3] & 0xff) << 24); } /** * 从传进来的字节数组得到 * 这个字节数组能组成的长整型的结果 * @param data 字节数组 * @return 长整型 */ public static long getLong(byte[] data) { if (data.length != 8) { throw new IllegalArgumentException("数组长度非法,要长度为4!"); } return (data[0] & 0xff) | ((data[1] & 0xff) << 8) | ((data[2] & 0xff) << 16) | ((data[3] & 0xff) << 24) | ((data[4] & 0xff) << 32) | ((data[5] & 0xff) << 40) | ((data[6] & 0xff) << 48) | ((data[7] & 0xff) << 56); } /** * 得到相应的文件选择框,因为要求不一定一样 * @param filter * @param canDir * @return */ public static JFileChooser getFileChooser(FileNameFilter filter, int mode) { jfc.resetChoosableFileFilters(); jfc.setFileSelectionMode(mode); jfc.setAcceptAllFileFilterUsed(false); jfc.setFileFilter(filter); jfc.setFileHidingEnabled(true); return jfc; } /** * 根据一个文件的全路径得到它的扩展名 * @param path 全路径 * @return 扩展名 */ public static String getExtName(String path) { return path.substring(path.lastIndexOf(".") + 1); } /** * 得到两个矩形的距离 * @param rec1 矩形1 * @param rec2 矩形2 * @return 距离 */ public static int getDistance(Rectangle rec1, Rectangle rec2) { if (rec1.intersects(rec2)) { return Integer.MAX_VALUE; } int x1 = (int) rec1.getCenterX(); int y1 = (int) rec1.getCenterY(); int x2 = (int) rec2.getCenterX(); int y2 = (int) rec2.getCenterY(); int dis1 = Math.abs(x1 - x2) - rec1.width / 2 - rec2.width / 2; int dis2 = Math.abs(y1 - y2) - rec1.height / 2 - rec2.height / 2; return Math.max(dis1, dis2) - 1; } /** * 根据一些条件,统一生成一个滚动条 * @param min 最小值 * @param max 最大值 * @param value 当前值 * @param ball1 球1 * @param ball2 球2 * @param ball3 球3 * @param bg1 背景1 * @param bg2 背景2 * @param listener 监听器 * @param orientation 方向 * @return 滚动条 */ public static YOYOSlider createSlider(int min, int max, int value, Image ball1, Image ball2, Image ball3, Image bg1, Image bg2, ChangeListener listener, int orientation) { YOYOSlider yoyo = new YOYOSlider(); YOYOSliderUI ui = new YOYOSliderUI(yoyo); yoyo.setOpaque(false); yoyo.setMaximum(max); yoyo.setMinimum(min); yoyo.setValue(value); yoyo.setOrientation(orientation); ui.setThumbImage(ball1); ui.setThumbOverImage(ball2); ui.setThumbPressedImage(ball3); ui.setBackgroundImages(bg1); ui.setActiveBackImage(bg2); yoyo.setUI(ui); yoyo.addChangeListener(listener); return yoyo; } /** * 根据一些参数快速地构造出按钮来 * 这些按钮从外观上看都是一些特殊的按钮 * @param name 按钮图片的相对地址 * @param cmd 命令 * @param listener 监听器 * @return 按钮 */ public static JButton createJButton(String name, String cmd, ActionListener listener) { Image[] icons = Util.getImages(name, 3); JButton jb = new JButton(); jb.setBorderPainted(false); jb.setFocusPainted(false); jb.setContentAreaFilled(false); jb.setDoubleBuffered(true); jb.setIcon(new ImageIcon(icons[0])); jb.setRolloverIcon(new ImageIcon(icons[1])); jb.setPressedIcon(new ImageIcon(icons[2])); jb.setOpaque(false); jb.setFocusable(false); jb.setActionCommand(cmd); jb.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); jb.addActionListener(listener); return jb; } /** * 根据一些参数快速地构造出按钮来 * 这些按钮从外观上看都是一些特殊的按钮 * @param name 按钮图片的相对地址 * @param cmd 命令 * @param listener 监听器 * @param selected 是否被选中了 * @return 按钮 */ public static JToggleButton createJToggleButton(String name, String cmd, ActionListener listener, boolean selected) { Image[] icons = Util.getImages(name, 3); JToggleButton jt = new JToggleButton(); jt.setBorder(null); jt.setContentAreaFilled(false); jt.setFocusPainted(false); jt.setDoubleBuffered(true); jt.setIcon(new ImageIcon(icons[0])); jt.setRolloverIcon(new ImageIcon(icons[1])); jt.setSelectedIcon(new ImageIcon(icons[2])); jt.setOpaque(false); jt.setFocusable(false); jt.setActionCommand(cmd); jt.setSelected(selected); jt.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); jt.addActionListener(listener); return jt; } /** * 得到一系列的图片,以数字递增做为序列的 * @param who 图片的基名 * @param count 数量 * @return 图片数组 */ public static Image[] getImages(String who, int count) { Image[] imgs = new Image[3]; MediaTracker mt = new MediaTracker(panel); Toolkit tk = Toolkit.getDefaultToolkit(); for (int i = 1; i <= count; i++) { URL url = Util.class.getResource("/com/hadeslee/yoyoplayer/pic/" + who + i + ".png"); imgs[i - 1] = tk.createImage(url); mt.addImage(imgs[i - 1], i); } try { mt.waitForAll(); } catch (Exception exe) { exe.printStackTrace(); } return imgs; } /** * 根据某个URL得到这个URL代表的图片 * 并且把该图片导入内存 * @param name URL * @return 图片 */ public static Image getImage(String name) { URL url = Util.class.getResource("/com/hadeslee/yoyoplayer/pic/" + name); Image im = Toolkit.getDefaultToolkit().createImage(url); try { MediaTracker mt = new MediaTracker(panel); mt.addImage(im, 0); mt.waitForAll(); } catch (Exception exe) { exe.printStackTrace(); } return im; } /** * 根据一个比例得到两种颜色之间的渐变色 * @param c1 第一种颜色 * @param c2 第二种颜色 * @param f 比例 * @return 新的颜色 */ public static Color getGradientColor(Color c1, Color c2, float f) { int deltaR = c2.getRed() - c1.getRed(); int deltaG = c2.getGreen() - c1.getGreen(); int deltaB = c2.getBlue() - c1.getBlue(); int r1 = (int) (c1.getRed() + f * deltaR); int g1 = (int) (c1.getGreen() + f * deltaG); int b1 = (int) (c1.getBlue() + f * deltaB); Color c = new Color(r1, g1, b1); return c; } /** * 得到两种颜色的混合色 * @param c1 第一种颜色 * @param c2 第二种颜色 * @return 混合色 */ public static Color getColor(Color c1, Color c2) { int r = (c2.getRed() + c1.getRed()) / 2; int g = (c2.getGreen() + c1.getGreen()) / 2; int b = (c2.getBlue() + c1.getBlue()) / 2; return new Color(r, g, b); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -