`
Jonathan樊
  • 浏览: 77049 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

仿Windows XP 画图板

阅读更多
   仿照 WindowsXP 画图板  创建一个窗体,将窗体分为三个部分,左,右,下。
   左半部分,放置可以绘制的图形选项,如,直线,椭圆,三角形之类的图形按钮,以供选择。                   右半部分,就是画布了,可以在上面绘制图形。下半部分是颜色选择器。
   具体的实现就是添加三个面板,分别为,left,right,low.
   使用FlowLayout布局方式,这时就要注意计算好各个面板的大小。
 
首先,定义一个窗体,窗体可以继承JFrame。对其设定大小 setSize(宽,高),窗体的名字setTitle(""), 设置点击关闭按钮式窗体的运行方式:setDefaultCloseOperation().注意的是,在添加完所有的按钮,图片之后,要设置窗体可见:setVisible(true)。

      对左边面板的具体实现是,在 JButton 上添加对应形状的图片。为了使图片大小和按钮大小相适应,这时,就要设置按钮的大小。Dimension butSize = new Dimension(20, 20);这时设置按钮大小为20*20像素。然后在按钮上添加图片,这时就要用到javax.swing.ImageIcon。例如
Button上添加图片Line。ImageIcon  im=new ImageIcon("图片地址\\图片名称.jpg);图片各级地址之间注意用\\. final JButton Button=new JButton(im);
                Button.setPreferredSize(butSize);//这时把按钮Button设置为已经设置好的butsize大小。 添加按钮图片,就会依次性排列。

     右面板就是画布了,在上面绘制图形。
     下面板就是颜色选择器,可以选择各种颜色。(现在还没添加,以后会补充)。
     主义的一点是,对窗体设置大小时使用setSize,而对添加在窗体上的面板等其他的组件,就要用setPreferredSize。如,定义做面板的大小  left.setPreferredSize(new Dimension(50, 200));
    
      总体的布局设置好后,就是对事件的实现了。
      我们希望的结果是,点击一个按钮后,就可以在画布上绘制相对应的形状。这时就要对按钮和画布设置监听了。
      对按钮添加监听就是,是否点击了这个按钮,点击哪个按钮?这时就要用到ActionListener。 ActionListener是一个接口,我们需要对其进行实现。可以创建一个实现类,来实现里面的方法。为了知道,鼠标点击了哪个按钮,我们可以再实现类里定义一个Type属性 ,Type就是表示到底要绘制哪一个图形。实现ActionListener里面的方法就是对事件的一种处理方法 public void actionPerformed(ActionEvent e) {}actionPerformed里有两个
//e.getSource();//得到事件源对象
//e.getActionCommand();//得到事件源上的动作命令,如果没有设置动作命令,则获取事件源上的文本值。
这时,使用时可以对按钮进行setActionCommand,,这就是设置点击按钮是的命令。然后在actionPerformed方法里,getActionCommand,得到动作命令。使Type=e.getActionCommand,这时得到用户想要绘制的形状。

       得到用户想要绘制的形状后,需要在画布上绘制出。这时就要对画布进行监听。对画布监听使用的是MouseListener,因为我们是使用鼠标在画布上进行绘图,这时需要知道鼠标的活动,位置。同样需要实现类。我们需要知道,鼠标第一次按下去时的位置坐标,鼠标释放时的位置坐标。根据两点的位置绘制图形。在对按钮监听时,我们得到了Type属性,在鼠标监听里需要将其传入。(这一点是我第一次写时,特别纠结的一个地方,怎么将两个监听联系起来,怎么在鼠标监听里获得按钮上的命令~ ~)
   
       因为我们要绘制的图形不仅仅是一个,而且还要对不同的图形进行保存,而这些图形的绘制方法中有一些共同的部分,因此,我们可以定义一个抽象的Shape类,在Shape类里面定义一些子类必须使用的方法就好了。(这是我最没想到的地方,要学习的地方)
     
       如果不对图形进行保存,那么,在对画图板进行改变大小时,我们绘制的图形就要消失了,所以需要定义一个数据结构去保存我们的数据。这时,我们选择了队列。队列的好处是可以改变长度,因为我们绘制的图形个数是不确定的,选择数组是不行的。对图形进行保存后,再对画图板最大最小画后,我们绘制的图形就可以保存了。    在JFrame里面有一个paint方法,是每次窗体会自动调用的,我们只要对paint方法进行重写,让其每次调用时都重新绘制一遍我们曾经绘制过的图形,那么,在我们眼睛看来,绘制过的图形就一直在那里,没有丢失了。因为我们将绘制过的图形保存在了队列里面,那么,在paint方法里添加对队列的遍历,显示所有的形状就好了。
      下面是我初步写好的画图板,还需要继续完善:




      

      
      

     
1
0
分享到:
评论

相关推荐

    仿WindowsXP画图板设计(1)

    【标题】"仿WindowsXP画图板设计(1)"是一个关于开发类似Windows XP操作系统中经典画图工具的项目。这个项目旨在帮助学习者理解和实践图形用户界面(GUI)设计、事件处理以及基本的绘图功能。 【描述】虽然描述为空...

    仿XP画图板

    【标题】"仿XP画图板"是一款基于JAVA编程语言开发的应用程序,旨在模拟Windows XP操作系统中的经典画图工具。这个项目是为那些希望学习或熟悉GUI(图形用户界面)编程和事件处理的初学者设计的,同时也为用户提供了...

    仿 XP 系统画图板

    使用JAVA来开发仿XP画图板,意味着该程序可以在任何安装了JAVA运行环境的平台上运行,体现了JAVA的“一次编写,到处运行”的特性。 2. **图形用户界面**(GUI):仿XP系统画图板的界面设计是其关键部分,开发者可能...

    仿XP系统 画图板

    Java是一种广泛使用的编程语言,因其跨平台性而被选中来开发这个仿XP画图板。Java的Swing或JavaFX库可以用来构建GUI(图形用户界面),提供丰富的组件和功能,用于创建这个应用程序的界面和交互逻辑。画图板部分则...

    仿XP系统画图板

    【仿XP系统画图板】是一款简易的图形编辑软件,设计灵感来源于经典的Windows XP系统自带的画图工具。它旨在为用户提供一个简单的图形绘制环境,让任何人都能轻松上手,进行基本的绘画创作或者简单的图像编辑操作。这...

    一个仿XP的画图板实现

    标题 "一个仿XP的画图板实现" 暗示我们即将探讨的是一个软件开发项目,这个项目的目标是创建一个类似微软Windows XP操作系统中的“画图”程序的复制品。这个程序可能包含了基本的绘图工具,如选择颜色、线条粗细、...

    仿windows画图工具的html5画图工具

    `jspaint` 是一个基于HTML5技术的在线画图工具,它高度模仿了经典的Windows XP系统自带的画图程序。这个工具利用HTML5的Canvas元素,为用户提供了在Web浏览器上进行绘画和图像编辑的能力。Canvas是HTML5的一个重要...

    XP仿VISTA美化包合集

    而对于那些仍在使用 Windows XP 的用户来说,XP仿VISTA美化包合集提供了一个将XP界面风格升级至接近Vista的机会。 #### 二、美化包的主要特点 **1. 文件夹美化** - 文件夹图标被重新设计,采用了与Vista相似的透明...

    Java版水果管理系统源码-HubuPaint:基于.net之仿Windows画板设计

    Java版水果管理系统源码 HubuPaint 基于.net之仿Windows画板...随着操作系统不断的更新换代,其自带的画图板界面及功能也在不断变化,例如XP、Vista、Win10,它们画图板的界面布局风格以及功能都有所不同,这表明尽管

    一款超强的图形系统——Delphi源码Delphi-source-VG7.23

    软件不仅能在目前主流操作系统,如Windows NT、XP上优化运行,而且还完美兼容Windows98。在编程语言方面,软件提供的接口不仅能够支持VB、VC、Delphi、FoxPro、PowerBuilder、C++Builder、 C#、VB.net、VC.net、IE...

    经典的Access源码合集Trynew合集1

    仿Windows桌面的通用界面.rar Access中画图及剪贴板应用.rar 超强的图片、资料管理器.rar 纸牌游戏[游戏娱乐].rar 打开(调用)引用数据库窗体.rar 正方物资管理系统.rar QQLook.rar 导出表和查询到word.rar 设备...

    易语言模块914个

    windowsXP界面模拟模块4.0版.ec Windows消息函数.ec WINSYS.EC WYSQL客户端.ec xlAbout.ec XP-OK.EC XP.EC XP_EC.EC XP单选框1.1.ec XP完美模拟专家.EC XP按钮1.1.ec XP界面模拟模块3.1版.ec XP皮肤1.6...

    1345个易语言模块

    windowsXP 界面模拟模块1.03.ec windowsXP界面模拟模块3.0.ec windowsXP界面模拟模块4.0版.ec WindowsXP 界面模拟模块4.ec Windows消息函数.ec WINNET.EC WINSYS.EC wrmem.ec WYSQL 客户端.ec xlAbout.ec XP-OK.EC ...

    1350多个精品易语言模块

    windowsXP 界面模拟模块1.03.ec windowsXP界面模拟模块3.0.ec windowsXP界面模拟模块4.0版.ec WindowsXP 界面模拟模块4.ec Windows消息函数.ec WINNET.EC WINSYS.EC wrmem.ec WYSQL 客户端.ec xlAbout.ec XP-OK.EC ...

    protues教程PDF

    - **操作系统支持**:支持Windows 98/Me/2000/XP等多个版本。 - **长期开发经验**:产品经过15年以上的持续开发和改进。 - **全球用户基础**:在全球35个国家拥有数千个用户。 - **技术支持**:提供直接来自开发者的...

    易语言模块大全(共775个模块)

    画图模块(1.0).zip 花样进度条1.0(1.0).zip 获取字符串尺寸(1.2).zip 获取本机互联网IP地址(1.0).zip 黑客入侵模块 V1.00(1.0).zip IC卡读写模块-正式版(1.0).zip IP地址编辑框2.0(1.0).zip 进制转换(1.0).zip 加密...

Global site tag (gtag.js) - Google Analytics