版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、package windowcomponents;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Font;import java.awt.FontMetrics;import java.awt.GradientPaint;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Image;import java.awt.Insets;import java.awt.event.ActionEvent;import java.aw
2、t.event.ActionListener;import java.awt.geom.AffineTransform;import java.awt.image.BufferedImage;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JMenuItem;import javax.swing.JPanel;import javax.swing.JPopupMenu;public class WindowsStartMenuSimulati
3、on /* * param args */public static void main(String args) / TODO Auto-generated method stubDemoWindow15 dw = new DemoWindow15(模拟Windows开始菜单);dw.setBounds(dw.getToolkit().getScreenSize().width / 3, dw.getToolkit().getScreenSize().height / 3,dw.getToolkit().getScreenSize().width / 3, dw.getToolkit().g
4、etScreenSize().height / 3);dw.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);dw.setVisible(true);class DemoWindow15 extends JFrame implements ActionListener / 菜单项图片Image updateImage = new ImageIcon(images/update.gif).getImage();Image programImage = new ImageIcon(images/program.gif).getImage();Image
5、documentImage = new ImageIcon(images/document.gif).getImage();Image setImage = new ImageIcon(images/set.gif).getImage();Image findImage = new ImageIcon(images/find.gif).getImage();Image helpImage = new ImageIcon(images/help.gif).getImage();Image runImage = new ImageIcon(images/run.gif).getImage();Im
6、age logoutImage = new ImageIcon(images/logout.gif).getImage();Image shutdownImage = new ImageIcon(images/shutdown.gif).getImage();/ 按钮图片ImageIcon windowsImage = new ImageIcon(images/windows.gif);/ “开始”按钮JButton jb = new JButton(开始, windowsImage);StartMenu sm = new StartMenu();/ 布局面板JPanel jp1 = new
7、JPanel();JPanel jp2 = new JPanel();ImageMenu1 im = null;public DemoWindow15(String title) super(title);jb.setFont(new Font(宋体, Font.BOLD, 18);jp2.setLayout(new BorderLayout();jp2.add(jb, BorderLayout.WEST);add(jp1, BorderLayout.CENTER);add(jp2, BorderLayout.SOUTH);im = new ImageMenu1(Windows Update,
8、 updateImage);im.setFont(new Font(宋体, Font.BOLD, 22);sm.add(im);im = new ImageMenu1(程序, programImage);im.setFont(new Font(宋体, Font.BOLD, 22);sm.add(im);im = new ImageMenu1(文档, documentImage);im.setFont(new Font(宋体, Font.BOLD, 22);sm.add(im);im = new ImageMenu1(设置, setImage);im.setFont(new Font(宋体, F
9、ont.BOLD, 22);sm.add(im);im = new ImageMenu1(搜索, findImage);im.setFont(new Font(宋体, Font.BOLD, 22);sm.add(im);im = new ImageMenu1(帮助和支持, helpImage);im.setFont(new Font(宋体, Font.BOLD, 22);sm.add(im);im = new ImageMenu1(运行, runImage);im.setFont(new Font(宋体, Font.BOLD, 22);sm.add(im);im = new ImageMenu
10、1(注销, logoutImage);im.setFont(new Font(宋体, Font.BOLD, 22);sm.add(im);im = new ImageMenu1(关机, shutdownImage);im.setFont(new Font(宋体, Font.BOLD, 22);sm.add(im);/ 添加事件监听器jb.addActionListener(this);public void actionPerformed(ActionEvent e) / TODO Auto-generated method stub/ 设置菜单可见,获得菜单的高度,便于下一步设置菜单的位置s
11、m.setVisible(true);/ 显示图片菜单,通过位置设置,显示向上弹出的效果sm.show(jp1, 0, jp1.getHeight() - sm.getHeight();class StartMenu extends JPopupMenu / 显示Windows XP professional的文字图片private Image image = null;public StartMenu() / 创建文字图片image = createImage();public Image createImage() String text = Windows XP Professional
12、;/ 创建缓冲图片类变量BufferedImage bi = new BufferedImage(30, 400,BufferedImage.TYPE_INT_ARGB);/ 获取缓冲图片的2D绘图类变量Graphics2D g2d = bi.createGraphics();/ 绘制渐变背景GradientPaint paint = new GradientPaint(0, 0, Color.black, 100, 100,Color.blue, true);g2d.setPaint(paint);g2d.fillRect(0, 0, bi.getWidth(), bi.getHeight(
13、);/ 逆时针旋转绘制角度90度AffineTransform at = new AffineTransform();at.rotate(-Math.PI / 2);g2d.setTransform(at);g2d.setColor(Color.white);g2d.setFont(new Font(宋体, Font.BOLD, 16);/ 获取文字尺寸FontMetrics metrics = g2d.getFontMetrics();int width = metrics.stringWidth(text);int height = metrics.getAscent();/ 居中绘制文字
14、g2d.drawString(text, -width - 50, bi.getWidth() / 2);return bi;public Insets getInsets() Insets insets = (Insets) super.getInsets().clone();insets.left += image.getWidth(null);return insets;public void paint(Graphics g) super.paint(g);if (image != null) Insets insets = getInsets();g.drawImage(image, insets.left - image.getWidth(null), insets.top,null);/ 图片菜单项类class ImageMenu1 extends JMenuItem private Image image = null;public ImageMenu1(String title, Image image) super(title);this.image = image;/ 设置菜单项中显示文字图片的间隔大小public Insets getInsets() Inse
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年式厨房设备购买与租赁合同
- 2024年企业间借贷合同
- 2024年新式企业融资协议
- DB4115T 052-2018 信阳传统风味小吃烹饪技艺 粉条馍
- DB4107T 492-2022 玉米病虫草害综合防治技术规范
- 2024年房地产中介居间买卖合同
- 2024年文物建筑加固保护施工合同
- 2024年房地产咨询服务与代理协议
- 2024年 edition 城市综合体开发投资合同
- 2024年新式商业合作条款
- 国有资产应急管理预案
- 华为综合面试常见问题
- 2022年上海外国语大学三亚附属中学招聘考试真题
- 小批量试产报告1
- 电机与电气控制技术课程说课
- 2014年中级统计师《统计工作实务》真题
- 作业本印制服务投标方案(技术标)
- 行政批复协议书范本
- 清理杂树杂草施工方案范本
- 【语文】宁波市小学四年级上册期中试卷
- 《埃隆·马斯克传》导读
评论
0/150
提交评论