博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java应用——高仿Windows XP画板(一)
阅读量:3976 次
发布时间:2019-05-24

本文共 9832 字,大约阅读时间需要 32 分钟。

规范问题

1.命名规范 统一的原则,命名不要太随意,要做到顾名思义
1)包名:com/cn.公司或单位名.包的功能名,所有单词字母小写
2)类名:由多个单词组合时,每个单词的首字母都要大写(驼峰式)
3)属性名和方法名:除第一个单词首字母小写,后面的其他单词首字母都大写(驼峰 式)
2.注释规范
1)类注释:/**
* 注释说明
* @author 作者名
**/

2)方法注释:/**

* 实现加法操作的函数
* @param a 参数,用于方法内部使用,提供值得引导
* @return 运行后的结果
*/

3)行注释://注释内容

符号“+”的应用
1.连接符:起到将字符串连接起来形成一个新的字符串的作用
当+号左右两边的任意一边是字符串时,得到的结果是一个新的字符串
2.运算符:起到数学里运算的作用
只有+号左右两边都是基本数据类型时,得到的结果是基本数据类型
如:1+”2”+3=123;
1+2+”3”=33;
“1”+2+3=123;
“1”+(2+3)=15;
高仿画板
首先看一下XP画板的界面以及最后写出来的效果:这里写图片描述

这里写图片描述

写出这个画板分成5个步骤
1.写出整个窗体,布局为边框布局
2.写菜单栏,菜单栏不参与窗体布局
3.写窗体的西边区域
4.写窗体的南边区域
5.写窗体的中间区域
最后列出整个窗体的代码:
主函数:

/** * 主函数,启动程序 * @author Queen_Queen * */public class Test_main {
public static void main(String[] args) { XPDraw xp=new XPDraw(); xp.initJFrame(); }}

窗体类:

import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.GridLayout;import java.awt.Color;import javax.swing.ButtonGroup;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JPanel;import javax.swing.JRadioButton;import javax.swing.border.BevelBorder;/** * 仿XP画板的界面 * @author Queen_Queen * */@SuppressWarnings("serial")public class XPDraw extends JFrame{
public void initJFrame() { /**************************窗体属性的设置*************************************/ setSize(1025,526); //设置窗体大小不可调 //setResizable(false); setLocationRelativeTo(null); setTitle("XP画板"); setDefaultCloseOperation(3); /**************************菜单栏块的设置*************************************/ JMenuBar jMenuBar=new JMenuBar(); setJMenuBar(jMenuBar); //菜单条 JMenu jMenuFile=new JMenu("文件(F)"); JMenu jMenuEditor=new JMenu("编辑(E)"); JMenu jMenuView=new JMenu("查看(V)"); JMenu jMenuImage=new JMenu("图像(I)"); JMenu jMenuColor=new JMenu("颜色(C)"); JMenu jMenuHelp=new JMenu("查看(H)"); jMenuBar.add(jMenuFile); jMenuBar.add(jMenuEditor); jMenuBar.add(jMenuView); jMenuBar.add(jMenuImage); jMenuBar.add(jMenuColor); jMenuBar.add(jMenuHelp); //文件菜单项 JMenuItem jMenuItemFile[]= { new JMenuItem("新建(N) Ctrl+N"),new JMenuItem("打开(O) Ctrl+O"),new JMenuItem("保存(S) Ctrl+S"), new JMenuItem("另存为(A)"),new JMenuItem("从扫描仪或照相机(C)"),new JMenuItem("打印预览(V)"), new JMenuItem("页面设置(U)"),new JMenuItem("打印(P) Ctrl+P"),new JMenuItem("发送(E)"), new JMenuItem("设置为墙纸(平铺)(B)"),new JMenuItem("设置为墙纸(居中)(K)"),new JMenuItem("最近使用过的文件"), new JMenuItem("退出(X)") }; for(int i=0;i<13;i++) jMenuFile.add(jMenuItemFile[i]); //编辑菜单项 JMenuItem jMenuItemEditor[]= { new JMenuItem("撤销(U) Ctrl+Z"),new JMenuItem("重复(R) Ctrl+Y"),new JMenuItem("剪切(T) Ctrl+X"), new JMenuItem("复制(C) Ctrl+C"),new JMenuItem("粘贴(P) Ctrl+V"),new JMenuItem("清除选定内容(L) Del"), new JMenuItem("全选(A) Ctrl+A"),new JMenuItem("复制到(O)…"),new JMenuItem("粘贴来源(F)…") }; for(int i=0;i<9;i++) jMenuEditor.add(jMenuItemEditor[i]); //查看菜单项 JMenuItem jMenuItemView[]= { new JMenuItem("工具箱(T) Ctrl+T"),new JMenuItem("颜料盒(C) Ctrl+L"),new JMenuItem("状态栏(S)"), new JMenuItem("文字工具栏(E)"),new JMenu("缩放(Z)"),new JMenuItem("查看位图(V) Ctrl+F") }; for(int i=0;i<6;i++) jMenuView.add(jMenuItemView[i]); JMenuItem jMenuItemZoom[]= { new JMenuItem("常规尺寸(N) Ctrl+PgUp"),new JMenuItem("大尺寸(L) Ctrl+PgDn"),new JMenuItem("自定义(U)"), new JMenuItem("显示网格(G) Ctrl+G"),new JMenuItem("显示缩略图(H)") }; for(int i=0;i<5;i++) jMenuItemView[4].add(jMenuItemZoom[i]); //图像菜单项 JMenuItem jMenuItemImage[]= { new JMenuItem("翻转/旋转(F) Ctrl+R"),new JMenuItem("拉伸/扭曲(S) Ctrl+W"),new JMenuItem("反色(I) Ctrl+I"), new JMenuItem("属性(A) Ctrl+E"),new JMenuItem("清除图像(C) Ctrl+Shift+N"),new JMenuItem("不透明处理(D)") }; for(int i=0;i<6;i++) jMenuImage.add(jMenuItemImage[i]); //颜色菜单项 jMenuColor.add(new JMenuItem("编辑颜色(E)")); //帮助菜单项 jMenuHelp.add(new JMenuItem("帮助主题(H)")); jMenuHelp.add(new JMenuItem("帮助主题(H)")); /**************************西边面板的设置*************************************/ JPanel jPanelWest=new JPanel(); jPanelWest.setBackground(new Color(240, 240, 240)); jPanelWest.setPreferredSize(new Dimension(56, 0)); jPanelWest.setLayout(new FlowLayout(1,0,0)); jPanelWest.setBorder(new BevelBorder(0,Color.WHITE,Color.DARK_GRAY)); //添加面板 add(jPanelWest,BorderLayout.WEST); ButtonGroup buttonGroupPen=new ButtonGroup(); for(int i=0;i<16;i++) { JRadioButton jRadioButtonPen=new JRadioButton(); jRadioButtonPen.setIcon(new ImageIcon("images/draw"+i+".jpg")); jRadioButtonPen.setRolloverIcon(new ImageIcon("images/draw"+i+"-1.jpg")); jRadioButtonPen.setPressedIcon(new ImageIcon("images/draw"+i+"-2.jpg")); jRadioButtonPen.setSelectedIcon(new ImageIcon("images/draw"+i+"-3.jpg")); jRadioButtonPen.setBorder(null); buttonGroupPen.add(jRadioButtonPen); jPanelWest.add(jRadioButtonPen); } //子面板的设置 JPanel jPanelCloned=new JPanel(); jPanelCloned.setPreferredSize(new Dimension(43,55)); jPanelCloned.setBorder(new BevelBorder(1, Color.WHITE, Color.gray)); jPanelCloned.setLayout(new FlowLayout(1,2,5)); ButtonGroup buttonGroupLineSize=new ButtonGroup(); for(int i=1;i<6;i++) { JRadioButton jRadioButtonLineSize=new JRadioButton(); jRadioButtonLineSize.setIcon(new ImageIcon("images/lineSize_"+i+".gif")); jRadioButtonLineSize.setBorder(null); buttonGroupLineSize.add(jRadioButtonLineSize); jPanelCloned.add(jRadioButtonLineSize); } jPanelWest.add(jPanelCloned); /**************************南边面板的设置*************************************/ JPanel jPanelSouth=new JPanel(); jPanelSouth.setBackground(new Color(240, 240, 240)); jPanelSouth.setPreferredSize(new Dimension(0, 79)); jPanelSouth.setLayout(null); //添加面板 add(jPanelSouth,BorderLayout.SOUTH); //添加左下角调色盘 JPanel jPanelPalette=new JPanel(); jPanelPalette.setBounds(0, 9, 240, 30); jPanelPalette.setLayout(new BorderLayout()); jPanelSouth.add(jPanelPalette); /** * 笔刷显色区代码块 */ //面板 JPanel jPanelChange=new JPanel(); jPanelChange.setBorder(new BevelBorder(1,Color.white,Color.darkGray)); jPanelChange.setLayout(null); jPanelChange.setPreferredSize(new Dimension(30, 30)); //按钮属性 JButton jButtonPen=new JButton(); jButtonPen.setBackground(Color.black); JButton jButtonBack=new JButton(); jButtonBack.setBackground(Color.white); jButtonPen.setBorder(new BevelBorder(0, Color.white, Color.GRAY)); jButtonBack.setBorder(new BevelBorder(0, Color.white, Color.GRAY)); jButtonPen.setBounds(5, 5, 15, 15); jButtonBack.setBounds(10, 10, 15, 15); //设置按钮不可使用 jButtonPen.setEnabled(false); jButtonBack.setEnabled(false); jPanelChange.add(jButtonPen); jPanelChange.add(jButtonBack); jPanelPalette.add(jPanelChange,BorderLayout.WEST); /** * 颜料盒代码块 */ JPanel jPanelPigment=new JPanel(); jPanelPigment.setPreferredSize(new Dimension(210, 30)); jPanelPigment.setLayout(new GridLayout(2, 14)); Color color[]= { new Color(0, 0, 0),new Color(128, 128, 128),new Color(128, 0, 0),new Color(128, 128, 0), new Color(0, 128, 0),new Color(0, 128, 128),new Color(0, 0, 128),new Color(128, 0, 128), new Color(128, 128, 64),new Color(0, 64, 64),new Color(0, 128, 255),new Color(0, 64, 128), new Color(128, 0, 255),new Color(128, 64, 0),new Color(255, 255, 255),new Color(192, 192, 192), new Color(255, 0, 0),new Color(255, 255, 0),new Color(0, 255, 0),new Color(0, 255, 255), new Color(0, 0, 255),new Color(255, 0, 255),new Color(255, 255, 128),new Color(0, 255, 128), new Color(128, 255, 255),new Color(128, 128, 255),new Color(255, 0, 128),new Color(255, 128, 64) }; for(int i=0;i<28;i++) { JButton jButtonPigment=new JButton(); jButtonPigment.setBackground(color[i]); jButtonPigment.setPreferredSize(new Dimension(15, 15)); jButtonPigment.setBorder(new BevelBorder(1,Color.WHITE,Color.DARK_GRAY)); jPanelPigment.add(jButtonPigment); } jPanelPalette.add(jPanelPigment); //帮助标签条 JLabel jLabelHelp=new JLabel("要获得帮助,请在帮助“菜单”中,单击“帮助主题”。"); jLabelHelp.setBounds(0, 49, 1025, 30); jLabelHelp.setBorder(new BevelBorder(0,Color.WHITE,Color.GRAY)); jPanelSouth.add(jLabelHelp); /**************************中间面板的设置*************************************/ JPanel jPanelCenter=new JPanel(); jPanelCenter.setBackground(new Color(170,170,170)); jPanelCenter.setLayout(new FlowLayout(0,5,5)); //添加面板 add(jPanelCenter); //画布设置 JPanel jPanelDraw=new JPanel(); jPanelDraw.setPreferredSize(new Dimension(940, 400)); jPanelDraw.setBackground(Color.WHITE); jPanelCenter.add(jPanelDraw); setVisible(true); }}

总结:当然这个界面还有很多的细节问题需要优化,比如菜单的字体还有菜单项的分隔,还有底部的帮助提示标签,嗯,当然,这个界面还没实现事件监听,下一章就将实现这个,另外,窗体西边区域的那些单选按钮图片渲染所用到的图片是老师辛苦截屏下来的:

命名格式可以借鉴

你可能感兴趣的文章
百度统计接口调用——登录接口
查看>>
百度统计接口调用——获取站点列表
查看>>
百度统计接口调用——获取站点访问数据
查看>>
Java WEB开发基础知识
查看>>
[Java Web开发系列课程]从0.5开始学习Java Web开发(一):学习大纲
查看>>
birt标签的使用
查看>>
2012年1月8号订火车票历程
查看>>
My97日期控件
查看>>
30分钟3300%性能提升——python+memcached网页优化小记
查看>>
confmgr项目,django,dwz相关问题
查看>>
linux文件共享
查看>>
linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结(tar包解压)
查看>>
vi和vim区别
查看>>
程序员经典语录
查看>>
Django性能优化
查看>>
python模块学习 ---- smtplib 邮件发送
查看>>
Python模块学习 ---- subprocess 创建子进程
查看>>
python求时间差
查看>>
Python网页抓取urllib,urllib2,httplib[2]
查看>>
Python urllib2递归抓取某个网站下图片
查看>>