📄 lyricpanel.java
字号:
* 画出正在拖动的时候的时间,以便更好的掌握进度 * 这是画出水平方向的拖动时间 * @param sec 当前的秒数 * @param g 画笔 */ private void drawTimeH(int sec, Graphics g) { String s = Util.secondToString(sec); int centerX = getWidth() / 2; int height = getHeight(); g.drawLine(centerX - 5, 3, centerX + 5, 3); g.drawLine(centerX - 5, height - 3, centerX + 5, height - 3); g.drawLine(centerX, 3, centerX, height - 3); g.setFont(new Font(Config.getResource("LyricPanel.font"), Font.PLAIN, 14)); g.setColor(Util.getColor(config.getLyricForeground(), config.getLyricHilight())); Util.drawString(g, s, centerX, (height - Util.getStringHeight(s, g))); } public void run() { while (true) { try { Thread.sleep(config.getRefreshInterval()); if (pause) { synchronized (lock) { lock.wait(); } } else { if (ly != null) { ly.setHeight(this.getHeight()); ly.setWidth(this.getWidth()); ly.setTime(player.getTime()); repaint(); } } } catch (Exception exe) { exe.printStackTrace(); } } } public void dragEnter(DropTargetDragEvent dtde) { dtde.acceptDrag(DnDConstants.ACTION_COPY_OR_MOVE); } public void dragOver(DropTargetDragEvent dtde) { } public void dropActionChanged(DropTargetDragEvent dtde) { } public void dragExit(DropTargetEvent dte) { } public void drop(DropTargetDropEvent e) { try { //得到操作系统的名字,如果是windows,则接受的是DataFlavor.javaFileListFlavor //如果是linux则接受的是DataFlavor.stringFlavor String os = System.getProperty("os.name"); if (os.startsWith("Windows")) { if (e.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) { Transferable tr = e.getTransferable(); e.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE); @SuppressWarnings("unchecked") java.util.List<File> s = (java.util.List<File>) tr.getTransferData( DataFlavor.javaFileListFlavor); if (s.size() == 1) { File f = s.get(0); if (f.isFile() && player.getCurrentItem() != null) { ly = new Lyric(f, player.getCurrentItem()); ly.setWidth(this.getWidth()); ly.setHeight(this.getHeight()); player.setLyric(ly); } } e.dropComplete(true); } } else if (os.startsWith("Linux")) { if (e.isDataFlavorSupported(DataFlavor.stringFlavor)) { e.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE); Transferable tr = e.getTransferable(); String[] ss = tr.getTransferData(DataFlavor.stringFlavor).toString().split("\r\n"); if (ss.length == 1) { File f = new File(new URI(ss[0])); if (f.isFile() && player.getCurrentItem() != null) { ly = new Lyric(f, player.getCurrentItem()); ly.setWidth(this.getWidth()); ly.setHeight(this.getHeight()); player.setLyric(ly); } } e.dropComplete(true); } } else { e.rejectDrop(); } } catch ( Exception io) { io.printStackTrace(); e.rejectDrop(); } } public void setState(int state) { if (state == H || state == V) { this.state = state; } } public void setResized(boolean b) { isResized = b; } public void mouseClicked(MouseEvent e) {// //双击的时候,改变显示风格// if (e.getClickCount() == 2) {// if (state == H) {// state = V;// } else {// state = H;// }// } } public void mousePressed(MouseEvent e) { if (ly == null) { return; } if (e.getButton() == MouseEvent.BUTTON1) { if (area != null && area.contains(e.getPoint())) { try { Desktop.getDesktop().browse(new URI("http://www.blogjava.net/hadeslee")); } catch (URISyntaxException ex) { Logger.getLogger(LyricPanel.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(LyricPanel.class.getName()).log(Level.SEVERE, null, ex); } } if (ly != null && ly.canMove()) { isPress = true; isDrag = false; if (state == V) { start = e.getY(); } else { start = e.getX(); } ly.startMove(); } } } public void mouseReleased(MouseEvent e) { if (ly == null) { return; } //如果是鼠标左键 if (e.getButton() == MouseEvent.BUTTON1) { if (ly.canMove() && isDrag) { if (state == H) { end = e.getX(); } else { end = e.getY(); } long time = ly.getTime(); player.setTime(time); start = end = 0; } ly.stopMove(); isPress = false; isDrag = false; //如果是鼠标右键 } else if (e.getButton() == MouseEvent.BUTTON3) { if (player.getCurrentItem() == null) { return; } JPopupMenu pop = new JPopupMenu(); Util.generateLyricMenu(pop, this); pop.show(this, e.getX(), e.getY()); } } /** * 隐藏自己 */ public void hideMe() { player.setShowLyric(false); } public Lyric getLyric() { return ly; } public void mouseEntered(MouseEvent e) { if (ly != null && ly.canMove()) { this.setCursor(new Cursor(Cursor.HAND_CURSOR)); } else { this.setCursor(Cursor.getDefaultCursor()); } } public void mouseExited(MouseEvent e) { this.setCursor(Cursor.getDefaultCursor()); isOver = false; } public void mouseWheelMoved(MouseWheelEvent e) { if (ly == null) { return; } //只有当配置允许鼠标滚动调整时间才可以 if (config.isMouseScrollAjustTime()) { int adjust = e.getUnitsToScroll() * 100;//每转动一下,移动300毫秒 ly.adjustTime(adjust); } } public void mouseDragged(MouseEvent e) { if (ly == null) { return; } if (ly.canMove() && isPress) { isDrag = true; if (state == H) { end = e.getX(); } else { end = e.getY(); } } } public void mouseMoved(MouseEvent e) { if (area != null && area.contains(e.getPoint())) { isOver = true; this.setCursor(new Cursor(Cursor.HAND_CURSOR)); } else { isOver = false; mouseEntered(e); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -