主題:Swing 實現截圖小軟件 (六)
既然 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(16, 16, 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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!