主題:Swing 實現截圖小軟件 (六)

quguiliang 13年前發布 | 2K 次閱讀

既然 sdtm1016 兄 給出新的建議,那我們就繼續完善下 SnapShoot

 

按 sdtm1016 兄的需求,這次再增加三個功能:

 

1. 修改文件選擇窗口的默認目錄為系統桌面,且給定默認文件名。


2. 增加托盤功能,且程序運行時,不自動顯示軟件窗口。


3. 增加系統熱鍵功能,即:不管程序當前有沒有獲得焦點,均可以保持鍵盤快捷鍵的監聽,實現快捷功能。

 

 

功能一: 修改文件選擇窗口的默認目錄為系統桌面,且給定默認文件名。

 

對于在當前用戶的系統桌面目錄的取得,Java API 已經有提供了:

<DIV class=dp-highlighter>

<DIV class=bar>

<DIV class=tools>Java代碼 <A title=復制代碼 onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="/misc/goto?guid=4958346284570877790"><IMG alt=復制代碼 src="/images/icon_copy.gif"></A></DIV></DIV>

<OL class=dp-j>

  • //得到當前用戶的桌面目錄   
  • File desktopDir = FileSystemView.getFileSystemView().getHomeDirectory();  
  • </OL></DIV><PRE style="DISPLAY: none" class=java name="code">//得到當前用戶的桌面目錄 File desktopDir = FileSystemView.getFileSystemView().getHomeDirectory();</PRE>

     

    那么我們設定文件選擇窗口的默認選中文件為  用戶桌面目錄下的 save.png :

    <DIV class=dp-highlighter>

    <DIV class=bar>

    <DIV class=tools>Java代碼 <A title=復制代碼 onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="/misc/goto?guid=4958346284570877790"><IMG alt=復制代碼 src="/images/icon_copy.gif"></A></DIV></DIV>

    <OL class=dp-j>

  • JFileChooser chooser = new JFileChooser();   
  • File selectedFile = new File(FileSystemView.getFileSystemView().getHomeDirectory(), "save.png");   
  • //設置默認選中文件   
  • chooser.setSelectedFile(selectedFile);  
  • </OL></DIV><PRE style="DISPLAY: none" class=java name="code">JFileChooser chooser = new JFileChooser(); File selectedFile = new File(FileSystemView.getFileSystemView().getHomeDirectory(), "save.png"); //設置默認選中文件 chooser.setSelectedFile(selectedFile);</PRE>

     

    功能一完成。

     

     

     

    功能二:增加托盤功能,且程序運行時,不自動顯示軟件窗口。

     

    在 JDK6.0 中,也提供了對系統托盤的操作。  本例關于加入系統托盤的代碼:

    <DIV class=dp-highlighter>

    <DIV class=bar>

    <DIV class=tools>Java代碼 <A title=復制代碼 onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="/misc/goto?guid=4958346284570877790"><IMG alt=復制代碼 src="/images/icon_copy.gif"></A></DIV></DIV>

    <OL class=dp-j>

  • /**  
  •  * 加入系統托盤  
  •  */  
  • private void addSystemTray() {   
  •     //修改窗口關閉和最小化事件   
  •     this.addWindowListener(new WindowAdapter() {   
  •         public void windowClosed(WindowEvent e) {   
  •             SnapShoot.this.setVisible(false);   
  •         }   
  •            
  •         public void windowIconified(WindowEvent e) {   
  •             SnapShoot.this.setVisible(false);   
  •         }   
  •     });   
  •        
  •     if (SystemTray.isSupported()) {   
  •            
  •         SystemTray tray = SystemTray.getSystemTray();   
  •            
  •         // 為這個托盤加一個彈出菜單   
  •         final PopupMenu popup = new PopupMenu();   
  •         MenuItem item = new MenuItem("open  ctrl + shift + o");   
  •         MenuItem exit = new MenuItem("exit");   
  •         popup.add(item);   
  •         popup.add(exit);   
  •            
  •         item.addActionListener(new ActionListener() {   
  •             public void actionPerformed(ActionEvent e) {   
  •                 SnapShoot.this.setVisible(true);   
  •             }   
  •         });   
  •            
  •         exit.addActionListener(new ActionListener() {   
  •             public void actionPerformed(ActionEvent e) {   
  •                 //清除系統熱鍵   
  •                 JIntellitype.getInstance().cleanUp();   
  •                 System.exit(1);   
  •             }   
  •         });   
  •            
  •         // 為這個托盤加一個提示信息   
  •         Image scaleLogo = ((BufferedImage)logo).getScaledInstance(1616, Image.SCALE_FAST);   
  •         TrayIcon trayIcon = new TrayIcon(scaleLogo, "屏幕截圖小軟件: SnapShoot\n作者:pengranxiang", popup);   
  •            
  •         try {   
  •             tray.add(trayIcon);   
  •         } catch (AWTException e) {   
  •             System.err.println("無法向這個托盤添加新項: " + e);   
  •         }   
  •     } else {   
  •         System.err.println("無法使用系統托盤!");   
  •     }   
  • }  
  • </OL></DIV>

     本文由用戶 quguiliang 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
     轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
     本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!