番茄時間管理法(Pomodoro Technique):一個番茄是如何讓你工作更有效率的
如果你經常讀一些關於提高工作效率或時間管理類的博客,一定聽說過番茄時間管理法(Pomodoro Technique)。這是一種極好的幫助你集中注意力、獲得更高工作效率的方法。 基本上,它的實施方法是這樣的: 確定你想要做什麼(例如:翻譯一篇外文)。 設定一個25分鐘的定時器。 工作,直到定時器時間到:這就是一個“番茄鐘”。 休息5分鐘,繼續下一個番茄鐘 每4個番茄鐘做一次長時間的休息。 大多數人都會對其做一些細微調整來適應自己:例如,你可以選擇每兩個番茄鐘——而不是四個,做一次長時間的休息。這特別是你剛開始應用這種方法時。 軟件使用到的方法: 界面圓角實現代碼: [java] //圓角 AWTUtilities.setWindowShape(this, new RoundRectangle2D.Double( 0.0D, 0.0D, getWidth(), getHeight(), 26.0D, 26.0D)); 隱藏Frame標題代碼: [java] setUndecorated(true); 自己實現的標題,標題是一個panel,給標題增加了鼠標點擊移動的事件: [java] public class MouseMoveListener extends MouseAdapter implements MouseMotionListener { private Component parentComponent; private Component dragCom; private Point offset; public synchronized void install(Component comp,Component dragCom) { uninstall(); parentComponent = comp; this.dragCom = dragCom; dragCom.addMouseListener(this); dragCom.addMouseMotionListener(this); } public synchronized void uninstall() { if (dragCom != null) { dragCom.removeMouseListener(this); dragCom.removeMouseMotionListener(this); dragCom = null; } } @Override public void mousePressed(MouseEvent e) { if (e.getSource() == dragCom) offset = e.getPoint(); } @Override public void mouseDragged(MouseEvent e) { if (e.getSource() != dragCom) return; final int x = parentComponent.getX(); final int y = parentComponent.getY(); final Point lastAt = e.getPoint(); parentComponent.setLocation(x + lastAt.x - offset.x, y + lastAt.y - offset.y); } } 上面代碼使用方法如下: [java] MouseMoveListener mouseMoveListener = new MouseMoveListener(); mouseMoveListener.install(this, titlePanel); install參數第一個是當前的窗體,第二個是可以點擊移動的對象。 系統托盤圖標實現如下: [java] private void initTrayIcon() { PopupMenu popup = new PopupMenu(); MenuItem showItem = new MenuItem("顯示窗體"); ActionListener listener = new ActionListener() { public void actionPerformed(ActionEvent e) { setVisible(true); setExtendedState(Frame.NORMAL); SystemTray.getSystemTray().remove(trayIcon); } }; showItem.addActionListener(listener); popup.add(showItem); MenuItem exitItem = new MenuItem("退出"); exitItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { SystemTray.getSystemTray().remove(trayIcon); System.exit(0); } }); popup.add(exitItem); // 根據image、提示、菜單創建TrayIcon this.trayIcon = new TrayIcon(Icon.icon16.getImage(), "/u756a/u8304/u65f6/u95f4/u7ba1/u7406", popup); // 給TrayIcon添加事件監聽器 this.trayIcon.addActionListener(listener); } public void minimizeToTray() { SystemTray tray = SystemTray.getSystemTray(); try { tray.add(this.trayIcon); } catch (AWTException ex) { ex.printStackTrace(); } } 在eclipse中運行右鍵菜單時,如果有亂碼,可以在myeclipse中做如下修改(正常環境一般不會亂碼): 在Run configration中 添加:-Dfile.encoding=GB18030 倒計時:使用的timer和timertask 界面布局,多層的jpanel嵌套使用BorderLayout,3個按鈕顯示的panel使用了CardLayout