1、 课程设计说明书 题目 : 子用户界面及托盘的实现 院 系: 计算机科学与工程学院 专业班级: 计算机 10-3 学 号: 2010303089 学生姓名: 胡敬杰 指导教师: 王琳 2013 年 1 月 9 日 安徽理工大学课程设计(论文)任务书 计算机科学与工程学院 计算机科学与技术系 学 号 2010303089 学生姓名 胡敬杰 专业(班 级) 计算机 10-3 班 设计题目 子用户界面及托盘的实现 设 计 技 术 参 数 Vc+6.0 Word 文档 最低松弛度优先算法 链式存储模式 索引存储模式 设 计 要 求 启动程序后将在任务栏托盘区生成一应用程序托盘,左键双击弹出一子用户界面
2、窗口,右键单击托盘可关闭应用程序。 工 作 量 此论文的字数要求必须不少于 4000 工 作 计 划 2012.11.21 分析课程设计的目的、要求 2012.11.28 结合课本选择相应的算法实现要求 2012.12.4 制定具体步骤实现算法 2012.12.11 参考书籍构造算法模型 2012.12.18 编写程序源代码 2012.12.25 调试分析源代码使其完成目标要求 2013.1.2 做课程设计文档 2013.1.8 检验文档并提交 参 考 资 料 1.计算机操作系统(第三版)粱红兵 汤小丹 2.计算机操作系统实验教程 黄详喜 3.Java 语言程序设计 郑莉 4.算法设计与分析
3、吕国英 5.操作系统教程 孟庆昌 指导教师签字 系主任签字 2012 年 11 月 20 日 安徽理工大学课程设计(论文)成绩评定表学生姓名: 胡敬杰 学号: 2010303089 专业班级: 计算机 10-3 设计题目: 子用户界面及托盘的实现 指导教师评语: 成绩: 指导教师: 2012 年 1 月 10 日 摘要 众所周知,用过 Windows 的人都会对电脑桌面上一些应用程序的快捷方式留下深刻印象,因为这些快捷方式使用方便快捷,给用户带来了诸多方便。与此同时在任务栏托盘区中的应用程序托盘也可具有上述快捷方式的同等效果,而且托盘还具有提示信息,弹出菜单还可以执行许多其他的特定功能。这是桌
4、面快捷方式所无法比拟的。本文通过示例程序将演示这样一种效果: ( 1)启动程序后将在任务栏托盘区生成一应用程序托盘; ( 2)将鼠标移到托盘上显示提示信息并进行托盘演示; ( 3)左键双击托盘弹出一窗口; ( 4)右键单击托盘会弹出 -菜单:当窗口显示时可用菜单项上“关闭窗口”关闭打开的窗口;单击菜单项“退出”可关闭整个线程(主线程和子线程)此时托盘消失。 该演示程序由三部分组成: ( 1)创建托盘及托盘与主窗口的消息映射; ( 2)子用户界面线程的创建; ( 3)线程间的通信。 关键词 : 托盘 ,子用户界面 ,线程通信 目录 1 设计目的 .二 2 设计要求 .三 3 模拟算法的实现 .四
5、 3.1 主窗口( main 函数) .四 3.2 程序源代码 .四 3.3 程序运行结果截图 .九 4 总结 . 十一 5 参考文献 .错误 !未定义书签。 西南交通大学本科毕业设计(论文) 第 二 页 1 设计目的 本次的 课程设计将演示这样一种效果 :(l)启动程序后将在任务栏托盘区生成一应用程序托盘 ;(2)将鼠标移到托 盘上显示提示信息 “用户界面线程及托盘演示 ”;(3)左键双击托盘弹出一窗口 ;(4)右键单击托盘会弹出一菜单 :当窗口显示时可用菜单项上 “关闭窗口 ”关闭打开的窗口 ;单击菜单项 “退出 ”可关闭整个进程 (主线程和子线程 )此时托盘消失。 一、 演示 程序的设计
6、思路 (1)为了在关闭显示的窗口后 ,托盘不会消失 ,因此须将二个线程 (一个主线程和一个子线程 )线程中创建主窗口和在任务栏生成托盘并建立托盘和主窗口的消息映射。 (2)将子线程创建成用户界面线程 (窗口线程 )。主线程动态地生成子线程。 (3)为了在主线程中关闭子用户界面线程 ,因此需在主线程和子线程之间建立通信机制。 简单地说示例程序主要由三个部分组成 :第一部分创建托盘及托盘与主窗口的消息映射 ;第二部分将子线程创建成用户界面线程 (窗口线程 )。第三部分为了在主线程中关闭子用户界面线程,因此需在主线程和子线程之间建立通信机制。 西南交通大学本科毕业设计(论文) 第 三 页 2 设计要
7、求 1 启动程序后将在任务栏托盘区生成一应用程序托盘。 2 左键双击弹出一子用户界面窗口 3 右键单击托盘可关闭应用程序。 4 为了关闭显示的窗口后托盘不会消失,必须将程序设计成两个线程。 5 在主线程创建主窗口和在任务栏生成托盘并建立托盘和 主窗口的消息映射。 6 将子线程创建成用户界面线程 (窗口线程 )。主线程动态地生成子线程。 7 为了在主线程中关闭子用户界面线程,因此需在主线程和子线程之间建立通信机制。 西南交通大学本科毕业设计(论文) 第 四 页 3 模拟算法的实现 3.1 主窗口( main 函数) 3.2 程序源代码 TrayConsole 类:托盘图标控制台类 package
8、 bin; import java.awt.AWTException; import java.awt.Image; Main 函数 2.插入文件 3.显示文件目录 4.显示FAT表 5.搜索文件 6.搜索索引点 1.写入文件 磁盘文件的存储结构 直接存取的索引文件结构 0.退出 西南交通大学本科毕业设计(论文) 第 五 页 import java.awt.PopupMenu; import java.awt.SystemTray; import java.awt.Toolkit; import java.awt.TrayIcon; import java.awt.Window; import
9、 java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.MenuItem; import javax.swing.JFrame; import javax.swing.JOptionPane; public class TrayConsole private MenuItem item1; private MenuItem item2; priva
10、te MenuItem item3; private Image image; private TrayIcon trayIcon; public TrayConsole(final Window window) item1 = new MenuItem(“隐藏 “); item2 = new MenuItem(“关于 “); item3 = new MenuItem(“退出 “); PopupMenu popup = new PopupMenu(); popup.add(item1); popup.addSeparator(); popup.add(item2); popup.add(ite
11、m3); image = Toolkit.getDefaultToolkit().createImage(“resTrayIcon.png“); trayIcon = new TrayIcon(image,“安徽理工大学 “,popup); if(SystemTray.isSupported() SystemTray tray = SystemTray.getSystemTray(); try tray.add(trayIcon); catch (AWTException e) JOptionPane.showConfirmDialog(null, “错误,桌面系统托盘当前不可用! “,nul
12、l , JOptionPane.CLOSED_OPTION, JOptionPane.WARNING_MESSAGE); 西南交通大学本科毕业设计(论文) 第 六 页 ActionListener AListener1 = new ActionListener() Override public void actionPerformed(ActionEvent e) if(window.isVisible() window.setVisible(false); item1.setLabel(“显示 “); else window.setVisible(true); (JFrame)window
13、).setState(JFrame.NORMAL); item1.setLabel(“隐藏 “); ; ActionListener AListener2 = new ActionListener() Override public void actionPerformed(ActionEvent e) JOptionPane.showMessageDialog(null, “ 版权所有 (C) 2013 安徽理工大学 n 计 算 机 学 院 2010 级 (3) 班 “,“ 关于“,JOptionPane.INFORMATION_MESSAGE); ; ActionListener ALis
14、tener3 = new ActionListener() Override public void actionPerformed(ActionEvent e) int optionType = JOptionPane.showConfirmDialog(null, “您确实要退出本软件吗? “,null, JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if(optionType = JOptionPane.YES_OPTION) System.exit(0); ; MouseAdapter listener = new MouseAdapter() Override public void mouseClicked(MouseEvent e) if(e.getButton() = MouseEvent.BUTTON1) if(window.isVisible() window.setVisible(false); item1.setLabel(“显示 “); else window.setVisible(true); (JFrame)window).setState(JFrame.NORMAL); item1.setLabel(“隐藏 “);