版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)說明書</b></p><p> 題目: 子用戶界面及托盤的實(shí)現(xiàn) </p><p> 課程設(shè)計(jì)(論文)任務(wù)書</p><p> 2012年 11月 20日</p><p><b> 摘要</b></p><
2、p> 眾所周知,用過Windows的人都會(huì)對(duì)電腦桌面上一些應(yīng)用程序的快捷方式留下深刻印象,因?yàn)檫@些快捷方式使用方便快捷,給用戶帶來了諸多方便。與此同時(shí)在任務(wù)欄托盤區(qū)中的應(yīng)用程序托盤也可具有上述快捷方式的同等效果,而且托盤還具有提示信息,彈出菜單還可以執(zhí)行許多其他的特定功能。這是桌面快捷方式所無法比擬的。本文通過示例程序?qū)⒀菔具@樣一種效果:</p><p> (1)啟動(dòng)程序后將在任務(wù)欄托盤區(qū)生成一應(yīng)用程序
3、托盤;</p><p> (2)將鼠標(biāo)移到托盤上顯示提示信息并進(jìn)行托盤演示;</p><p> ?。?)左鍵雙擊托盤彈出一窗口;</p><p> ?。?)右鍵單擊托盤會(huì)彈出-菜單:當(dāng)窗口顯示時(shí)可用菜單項(xiàng)上“關(guān)閉窗口”關(guān)閉打開的窗口;單擊菜單項(xiàng)“退出”可關(guān)閉整個(gè)線程(主線程和子線程)此時(shí)托盤消失。</p><p> 該演示程序由三部分組成
4、:</p><p> ?。?)創(chuàng)建托盤及托盤與主窗口的消息映射;</p><p> (2)子用戶界面線程的創(chuàng)建;</p><p> ?。?)線程間的通信。</p><p> 關(guān)鍵詞:托盤 ,子用戶界面 ,線程通信</p><p><b> 目錄</b></p><p>
5、;<b> 1 設(shè)計(jì)目的二</b></p><p><b> 2 設(shè)計(jì)要求三</b></p><p> 3 模擬算法的實(shí)現(xiàn)四</p><p> 3.1主窗口(main函數(shù))四</p><p> 3.2程序源代碼四</p><p> 3.3程序運(yùn)行結(jié)果截圖
6、九</p><p><b> 4 總結(jié)十二</b></p><p> 5 參考文獻(xiàn)錯(cuò)誤!未定義書簽。</p><p><b> 1 設(shè)計(jì)目的</b></p><p> 本次的課程設(shè)計(jì)將演示這樣一種效果:(l)啟動(dòng)程序后將在任務(wù)欄托盤區(qū)生成一應(yīng)用程序托盤;(2)將鼠標(biāo)移到托盤上顯示提示信
7、息“用戶界面線程及托盤演示”;(3)左鍵雙擊托盤彈出一窗口;(4)右鍵單擊托盤會(huì)彈出一菜單:當(dāng)窗口顯示時(shí)可用菜單項(xiàng)上“關(guān)閉窗口”關(guān)閉打開的窗口;單擊菜單項(xiàng)“退出”可關(guān)閉整個(gè)進(jìn)程(主線程和子線程)此時(shí)托盤消失。</p><p> 一、演示程序的設(shè)計(jì)思路</p><p> (1)為了在關(guān)閉顯示的窗口后,托盤不會(huì)消失,因此須將二個(gè)線程(一個(gè)主線程和一個(gè)子線程)線程中創(chuàng)建主窗口和在任務(wù)欄生成托
8、盤并建立托盤和主窗口的消息映射。</p><p> (2)將子線程創(chuàng)建成用戶界面線程(窗口線程)。主線程動(dòng)態(tài)地生成子線程。</p><p> (3)為了在主線程中關(guān)閉子用戶界面線程,因此需在主線程和子線程之間建立通信機(jī)制。</p><p> 簡(jiǎn)單地說示例程序主要由三個(gè)部分組成:第一部分創(chuàng)建托盤及托盤與主窗口的消息映射;第二部分將子線程創(chuàng)建成用戶界面線程(窗口線
9、程)。第三部分為了在主線程中關(guān)閉子用戶界面線程,因此需在主線程和子線程之間建立通信機(jī)制。</p><p><b> 2 設(shè)計(jì)要求</b></p><p> 1 啟動(dòng)程序后將在任務(wù)欄托盤區(qū)生成一應(yīng)用程序托盤。</p><p> 2左鍵雙擊彈出一子用戶界面窗口</p><p> 3右鍵單擊托盤可關(guān)閉應(yīng)用程序。<
10、/p><p> 4為了關(guān)閉顯示的窗口后托盤不會(huì)消失,必須將程序設(shè)計(jì)成兩個(gè)線程。</p><p> 5在主線程創(chuàng)建主窗口和在任務(wù)欄生成托盤并建立托盤和主窗口的消息映射。</p><p> 6將子線程創(chuàng)建成用戶界面線程(窗口線程)。主線程動(dòng)態(tài)地生成子線程。</p><p> 7為了在主線程中關(guān)閉子用戶界面線程,因此需在主線程和子線程之間建立通
11、信機(jī)制。</p><p><b> 3 模擬算法的實(shí)現(xiàn)</b></p><p> 3.1主窗口(main函數(shù))</p><p><b> 3.2程序源代碼</b></p><p> TrayConsole類:托盤圖標(biāo)控制臺(tái)類</p><p> package bin
12、;</p><p> import java.awt.AWTException;</p><p> import java.awt.Image;</p><p> import java.awt.PopupMenu;</p><p> import java.awt.SystemTray;</p><p>
13、import java.awt.Toolkit;</p><p> import java.awt.TrayIcon;</p><p> import java.awt.Window;</p><p> import java.awt.event.ActionEvent;</p><p> import java.awt.event.
14、ActionListener;</p><p> import java.awt.event.MouseAdapter;</p><p> import java.awt.event.MouseEvent;</p><p> import java.awt.MenuItem;</p><p> import javax.swing.J
15、Frame;</p><p> import javax.swing.JOptionPane;</p><p> public class TrayConsole {</p><p> private MenuItem item1;</p><p> private MenuItem item2;</p><p&g
16、t; private MenuItem item3;</p><p> private Image image;</p><p> private TrayIcon trayIcon;</p><p> public TrayConsole(final Window window) {</p><p> item1 = new Me
17、nuItem("隱藏");</p><p> item2 = new MenuItem("關(guān)于");</p><p> item3 = new MenuItem("退出");</p><p> PopupMenu popup = new PopupMenu();</p><p>
18、; popup.add(item1);</p><p> popup.addSeparator();</p><p> popup.add(item2);</p><p> popup.add(item3);</p><p> image = Toolkit.getDefaultToolkit().createImage("
19、;res\\TrayIcon.png");</p><p> trayIcon = new TrayIcon(image,"安徽理工大學(xué)",popup);</p><p> if(SystemTray.isSupported()) {</p><p> SystemTray tray = SystemTray.getSystemT
20、ray();</p><p><b> try {</b></p><p> tray.add(trayIcon);</p><p> } catch (AWTException e) {</p><p> JOptionPane.showConfirmDialog(null, "錯(cuò)誤,桌面系統(tǒng)托盤當(dāng)前
21、不可用!",null , JOptionPane.CLOSED_OPTION, JOptionPane.WARNING_MESSAGE);</p><p><b> }</b></p><p><b> }</b></p><p> ActionListener AListener1 = new Actio
22、nListener() {</p><p><b> @Override</b></p><p> public void actionPerformed(ActionEvent e) {</p><p> if(window.isVisible()) {</p><p> window.setVisible(f
23、alse);</p><p> item1.setLabel("顯示");</p><p><b> } else {</b></p><p> window.setVisible(true);</p><p> ((JFrame)window).setState(JFrame.NORMAL)
24、;</p><p> item1.setLabel("隱藏");</p><p><b> }</b></p><p><b> }</b></p><p><b> };</b></p><p> ActionListen
25、er AListener2 = new ActionListener() {</p><p><b> @Override</b></p><p> public void actionPerformed(ActionEvent e) {</p><p> JOptionPane.showMessageDialog(null, "
26、; 版權(quán)所有 (C) 2013 安徽理工大學(xué)\n 計(jì)算機(jī)學(xué)院 2010級(jí)(3)班","關(guān)于",JOptionPane.INFORMATION_MESSAGE);</p><p><b> }</b></p><p><b> };</b></p><p> ActionList
27、ener AListener3 = new ActionListener() {</p><p><b> @Override</b></p><p> public void actionPerformed(ActionEvent e) {</p><p> int optionType = JOptionPane.showConfir
28、mDialog(null, "您確實(shí)要退出本軟件嗎?",null, JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);</p><p> if(optionType == JOptionPane.YES_OPTION) {</p><p> System.exit(0);</p><
29、p><b> }</b></p><p><b> }</b></p><p><b> };</b></p><p> MouseAdapter listener = new MouseAdapter() {</p><p><b> @Overri
30、de</b></p><p> public void mouseClicked(MouseEvent e) {</p><p> if(e.getButton() == MouseEvent.BUTTON1) {</p><p> if(window.isVisible()) {</p><p> window.setV
31、isible(false);</p><p> item1.setLabel("顯示");</p><p><b> } else {</b></p><p> window.setVisible(true);</p><p> ((JFrame)window).setState(JFrame
32、.NORMAL);</p><p> item1.setLabel("隱藏");</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b&g
33、t; };</b></p><p> item1.addActionListener(AListener1);</p><p> item2.addActionListener(AListener2);</p><p> item3.addActionListener(AListener3);</p><p> tray
34、Icon.addMouseListener(listener);</p><p><b> }</b></p><p> public MenuItem getItem() {</p><p> return item1;</p><p><b> }</b></p><
35、p><b> }</b></p><p> MainFrame類:Frame窗口類</p><p> package bin;</p><p> import java.awt.Image;</p><p> import java.awt.Toolkit;</p><p> i
36、mport java.awt.event.ActionEvent;</p><p> import java.awt.event.ActionListener;</p><p> import java.awt.event.MouseAdapter;</p><p> import java.awt.event.MouseEvent;</p>&
37、lt;p> import java.awt.event.MouseListener;</p><p> import java.awt.event.WindowAdapter;</p><p> import java.awt.event.WindowEvent;</p><p> import java.awt.event.WindowListene
38、r;</p><p> import javax.swing.JFrame;</p><p> import javax.swing.ImageIcon;</p><p> import javax.swing.JLayeredPane;</p><p> import javax.swing.JLabel;</p>&
39、lt;p> public class MainFrame extends JFrame {</p><p> TrayConsole tray;</p><p> JLayeredPane layeredPane;</p><p> JLabel imageLabel;</p><p> public MainFrame()
40、{</p><p> setTitle("Welcome To Here!");</p><p> Toolkit toolkit = Toolkit.getDefaultToolkit();</p><p> Image IconImage = toolkit.createImage("res\\Icon.png");
41、</p><p> setIconImage(IconImage);</p><p> setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);</p><p> setSize(500,300);</p><p> setResizable(false);</p>&l
42、t;p> tray = new TrayConsole(this);</p><p> setLocationRelativeTo(null);</p><p> addWindowListener(wListener);</p><p> layeredPane = new JLayeredPane();</p><p>
43、setLayeredPane(layeredPane);</p><p> layeredPane.setLayout(null);</p><p> ImageIcon backImage = new ImageIcon("res\\BackImage.png");</p><p> imageLabel = new JLabel(bac
44、kImage);</p><p> imageLabel.setBounds(0, 0, 494, 272);</p><p> layeredPane.add(imageLabel);</p><p> setVisible(true);</p><p><b> }</b></p><p&
45、gt; private WindowListener wListener=new WindowAdapter() {</p><p> public void windowClosing(WindowEvent e) {</p><p> JFrame frame = (JFrame)e.getWindow();</p><p> frame.setVisi
46、ble(false);</p><p> tray.getItem().setLabel("顯示");</p><p><b> }</b></p><p><b> @Override</b></p><p> public void windowIconified(W
47、indowEvent e) {</p><p> JFrame frame = (JFrame)e.getWindow();</p><p> frame.setVisible(false);</p><p> tray.getItem().setLabel("顯示");</p><p><b> }&l
48、t;/b></p><p><b> };</b></p><p><b> }</b></p><p> Launcher類:Java應(yīng)用程序入口</p><p> package bin;</p><p> public class Launcher {&
49、lt;/p><p> public static void main(String[] args) {</p><p> MainFrame frame = new MainFrame();</p><p><b> }</b></p><p><b> }</b></p><
50、;p> 3.3程序運(yùn)行結(jié)果截圖</p><p><b> 4 總結(jié)</b></p><p> 通過此次的課程設(shè)計(jì)進(jìn)一步加深了我對(duì)操作系統(tǒng)這門專業(yè)課程的認(rèn)識(shí)與理解,操作系統(tǒng)這門計(jì)算機(jī)專業(yè)重要課程比較抽象,而且不易于理解,課本的學(xué)習(xí)難度大大加大,雖然課上經(jīng)過老師的講解,但是有些比較抽象和難理解的地方還是感覺不是很明白,需要自己去慢慢理解。而此次課程設(shè)計(jì)讓我學(xué)會(huì)
51、了很多東西,這次的課程設(shè)計(jì)給我了巨大的收獲,讓我對(duì)操作系統(tǒng)的基本知識(shí)有了進(jìn)一步的提高,并在實(shí)踐中對(duì)各種概念有了進(jìn)一步的深化。一些理論課上不明白的地方也在課程設(shè)計(jì)過程中有了理解,一些疑惑的地方,通過與同學(xué)交流,查閱相關(guān)書籍及資料,得到了解決,極大的提高了自己對(duì)這門課程的知識(shí)理解,鍛煉了自己的動(dòng)手能力。</p><p> 課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn),提出,分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是
52、對(duì)學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過程。我想這不只是一次簡(jiǎn)簡(jiǎn)單單的課程設(shè)計(jì),更體現(xiàn)了操作系統(tǒng)和生活的緊密聯(lián)系。讓人不得不深思,這一個(gè)學(xué)期的學(xué)習(xí),自己究竟學(xué)會(huì)了什么,掌握了多少。我想大家都心里都有很多的感觸。對(duì)于自己,我想我已經(jīng)認(rèn)識(shí)到了自己的不足,在今后的學(xué)習(xí)過程中,一定會(huì)以嚴(yán)謹(jǐn)?shù)膽B(tài)度來對(duì)待編程,并且要經(jīng)常上機(jī)調(diào)試,堅(jiān)持理論與實(shí)踐相結(jié)合。</p><p><b> 5 參考文獻(xiàn)</b><
53、;/p><p> 湯小丹, 梁紅兵等,計(jì)算機(jī)操作系統(tǒng),第三版,西安電子科技大學(xué)出版社,2007.5(2010.10)</p><p> 2.計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)教程 黃詳喜</p><p> 3.Java語言程序設(shè)計(jì) 鄭莉</p><p> 4.算法設(shè)計(jì)與分析 呂國英</p><p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)課程設(shè)計(jì)-子用戶界面及托盤實(shí)現(xiàn)
- 操作系統(tǒng)課程設(shè)計(jì)——操作系統(tǒng)課程設(shè)計(jì)模擬操作系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)--模擬操作系統(tǒng)的實(shí)現(xiàn)
- 操作系統(tǒng)課程設(shè)計(jì)-- 操作系統(tǒng)
- 操作系統(tǒng)程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告-操作系統(tǒng)模擬實(shí)現(xiàn)
- 操作系統(tǒng)課程設(shè)計(jì)--多用戶多級(jí)目錄文件系統(tǒng)實(shí)現(xiàn)
- 操作系統(tǒng)課程設(shè)計(jì)---geekos操作系統(tǒng)的研究與實(shí)現(xiàn)
- Minicore操作系統(tǒng)圖形用戶界面的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 操作系統(tǒng)課程設(shè)計(jì)-- geekos操作系統(tǒng)的研究與實(shí)現(xiàn)
- 操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)---多用戶多級(jí)目錄文件系統(tǒng)的實(shí)現(xiàn)
- 內(nèi)存管理(操作系統(tǒng))操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)---多用戶多級(jí)目錄文件系統(tǒng)的實(shí)現(xiàn)
- 操作系統(tǒng)課程設(shè)計(jì)---多用戶多級(jí)目錄文件系統(tǒng)的實(shí)現(xiàn)
- 操作系統(tǒng)課程設(shè)計(jì)--臨界區(qū)管理實(shí)現(xiàn)
評(píng)論
0/150
提交評(píng)論