`
where
  • 浏览: 80843 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

做画图板的两点知识

阅读更多

 

<!--[if !supportLists]-->一.        <!--[endif]-->实现画图板更好的布局

以往我们用的是Flowlayout流式布局,现在要用BorderLayout,这个没什么技术含量,需要注意的是以下几点:

左(右)边的高度=窗体高度-(下边组件的高度+上边组件高度);

这句话的意思是不论你怎么定义它的高度,即使定义为0抑或更极端的直接取窗体高度。它都不会实现,只会按照那个定义式取值。

下(上)边的宽度=窗体的宽度;

中间部分的高度和宽度不用定义他的高和宽取的是四周取过后剩下的部分。

我们现在来实现它:

仿XP画图板的模式,我们把整个板块分成三部分(左中下),分别放图形选择、画图区、颜色选择,为此我们要做三件事:

第一件事是先创建布局管理器BorderLayout,并添加到窗体上;

// 创建流式布局管理器

java.awt.BorderLayout border = new java.awt.BorderLayout();

// 给窗体添加布局管理器

this.setLayout(border);

第二件事是创建三个面板,并将面板添加到窗体上;

//画布面板

              JPanel jp_draw = new JPanel();

              jp_draw.setBackground(Color.white);

              //图形选择面板

               JPanel jp_select = new JPanel();

               jp_select.setPreferredSize(new Dimension(80,0));

               jp_select.setBackground(Color.DARK_GRAY);

              //颜色选择面板

               JPanel jp_color = new JPanel();

               jp_color.setPreferredSize(new Dimension(0,80));

        jp_color.setBackground(Color.LIGHT_GRAY);

//将面板加在窗体上

this.add(jp_draw,BorderLayout.CENTER);

               this.add(jp_select,BorderLayout.WEST);

        this.add(jp_color,BorderLayout.SOUTH);

第三件事是将组建加在面板上

<!--[if gte vml 1]><v:shapetype id="_x0000_t202" coordsize="21600,21600" o:spt="202" path="m,l,21600r21600,l21600,xe"> <v:stroke joinstyle="miter" /> <v:path gradientshapeok="t" o:connecttype="rect" /> </v:shapetype><v:shape id="_x0000_s1026" type="#_x0000_t202" style='position:absolute; left:0;text-align:left;margin-left:282.5pt;margin-top:9.15pt;width:169.75pt; height:109.5pt;text-indent:0;z-index:251660288;mso-width-relative:margin; mso-height-relative:margin'> <v:textbox style='mso-next-textbox:#_x0000_s1026' /> </v:shape><![endif]--><!--[if !vml]-->

<!--[endif]--><!--[if !mso]-->
<!--[endif]-->

jp_color.add(jb_color);

<!--[if !mso]-->
<!--[endif]--><!--[if !mso & !vml]--> <!--[endif]--><!--[if !vml]-->
<!--[endif]-->jp_select.add(radio1);

               jp_select.add(radio2);

               jp_select.add(radio3);

               jp_select.add(radio4);

 

 

<!--[if !supportLists]-->二.         <!--[endif]-->添加选定颜色功能

这是一快比较有意思的部分,有以下几种方法。在开始前我们先把准备工作完成。

准备工作:创建一个“选择颜色”按钮,加在相应的面板上。

准备工作完成后,我们要实现的功能是我点击这个颜色选择按钮可以选择以后将要画图形的颜色。

为了实现这个功能,我们需要给这个JButton加一个Actionlistener。好我们现在来具体具体实现。

实现这个的第一种方法创建内部类加在画图板这个类中,在画图板的属性部分加一个Color类型的color,并定义初值。创建一个内部类继承Actionlistener并实现方法具体代码是:

class ColorListen implements ActionListener{

              public void actionPerformed(ActionEvent e) {

       color = javax.swing.JColorChooser.showDialog(null, "颜色选择", Color.black);

         }

接下来我们需要把刚才内部类取出的“color g.setColor(board.color);添加到图形上。随着这步的完成,这个功能基本就O了。

实现这个功能的方法二,创建一个类来继承Actionlistener方法同上只不过这个类不是内部类,现在就是三个类了我们可以把Color的对象传到  MouseListener中,在Color中定义一个方法

public Color getColor(){

                return color;

    }

然后把C_lis传到MouseListener,再用C_lis调用方法。

 

15
17
分享到:
评论

相关推荐

    《C语言课程设计案例精编》源代码

    在基础知识篇中,我们使用两章的篇幅重点介绍了后面章节中将涉及到的知识点;在游戏开发篇中,我们介绍了俄罗斯方块、推箱子、五子棋游戏的设计和实现;在文件操作篇中,我们介绍了学生成绩管理系统、工资管理系统、...

    ElasticSearch5.2全网最全技术视频

    (2-3)之所以要单独拉出一篇做大型项目实战,是因为,之前几篇讲的项目,多是架构较为简单,业务也不复杂的项目,主要适用于中小型公司,而且那两个项目主要是集中在运用ES的技术本身来开发出需要的功能来(搜索/...

    C语言课程设计案例精编光盘

    在基础知识篇中,我们使用两章的篇幅重点介绍了后面章节中将涉及到的知识点;在游戏开发篇中,我们介绍了俄罗斯方块、推箱子、五子棋游戏的设计和实现;在文件操作篇中,我们介绍了学生成绩管理系统、工资管理系统、...

    CAD实习报告.doc

    1. 实习目的 通过电子CAD实习,使我们进一步熟悉CAD的使用熟悉画图的基本知识。使学生了 解电子CAD在电子技术中的应用,我们应该掌握并熟悉的应用protel.掌握从原理图的 绘制、性能仿真到PCB设计的全过程,提高电子...

    C游戏编程从入门到精通(13M)

    106 9.2 重画技术 107 9.2.1 直接重画 107 9.2.2 缓冲技术 108 9.3 异或技术 110 9.4 调色板技术 112 9.4.1 调色板寄存器 112 9.4.2 调色板动画原理 115 9.4.3 调色板动画举例 116 9.5 拉屏技术 120 9.6 适用环境和...

    疯狂JAVA讲义

    学生提问:使用组合关系来实现复用时,需要创建两个Animal对象,是不是意味着使用组合关系时系统开销更大? 159 5.9 初始化块 159 5.9.1 使用初始化块 160 5.9.2 初始化块和构造器 161 5.9.3 静态初始化块 162 ...

    android开发资料大全

    APK权限大全 - Android必懂知识 最无私的Android资料(书籍+代码)分享[总结] Android中文帮助教程(非常合适新手入门) android程序编写及调试新手入门 大家一起学Android(Windows篇) android入门与提高必看指南 ...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    手动优化了PDF的书签,书签可折叠,书签链接以目录方式保存,多达1000多页,每页都做了书签定位,手都累酸啦。 ============================== 因权限只能到60MB,分卷压缩了,共3个压缩包,需下载完3个一起解压, ...

    PT80-NEAT开发指南v1.1

    NEAT 开 发 指南 文档 适用于 PT80 系列 移动数据终端 版本记录 版本号 版本描述 发布日期 V 1.0 初始版本。 2012-04-12 V1.1 修改前三章内容 2012-09-25 目录 第一章 关于本手册.....................................

    ASP.NET4高级程序设计(第4版) 3/3

    此外,《ASP.NET 4高级程序设计(第4版)》专门提供了两章的内容来教你如何用Ajax 技术制作快速响应的页面,以及如何使用微软的ASP.NETAJAX平台。另外,还专门介绍了ASP.NET4 新增的功能,如MVC 和动态数据等。  ...

Global site tag (gtag.js) - Google Analytics