您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > Java图形界面-AWT
Java图形界面编程引言:Java使用AWT和Swing类完成图形用户界面编程,其中AWT的全称是抽象窗口集,是sun公司最早提供的GUI库,这个GUI库提供一些基本功能,但这个GUI库的功能比较有限,所以后来又提供了Swing库。程序以一种“搭积木”的方式将这些图形组件组织在一起,就是实际可用的图形用户界面,再通过为组件添加事件,让程序响应用户动作。一、Java图形界面编程-AWT1.AWT图形界面编程2.AWT常用组件3.对话框与菜单4.布局管理器5.事件处理6.AWT绘图7.拖放功能的实现8.剪贴板1.AWT图形界面编程①AWT图形界面编程相关的类都在Java.awt包以及子包下②两个基类:Component和MenuComponentComponent能以图形方式显示出来,并可与用户交互的对象MenuComponent图形的菜单组件2.AWT常用组件用法详见代码示例:CommonComponent.java3.对话框与右键菜单(1)Dialog就是普通对话框,用法与普通窗口用法完全一样。构造方法Dialog(Frameowner,Stringtitle,booleanmodel)注:owner——及所依赖的父窗口title——标题model——模式与非模式(模式及不点此窗口无法处理父窗口)(2)FileDialog是Dialog类的子类,代表一个文件对话框用于打开或保存文件构造方法FileDialog(Frameparent,Stringtitle,intmode)注:parent与title分别表示父窗口和标题mode用于选择打开或保存文件有两个常量可供选择:FileDialog.LOADFileDialog.SAVE打开文件保存文件(3)AWT菜单(示例代码:SimpleMenu.java)1)2)其中menuitem构造方法可只传一个标签文本,另可传一个menushortcut设置快捷键例:MenuItemcaitem=newMenuItem(打开,newMenuShortcut(KeyEvent.VK_A));3)菜单分隔线两种方法menu对象的addSeparator()方法newMenuItem(-);4)创建右键功能(示例代码:PopupMenuTest.java)步骤:menumenubarmenuitem创建PopupMenu实例创多个MenuItem加入PopupMenu将PopupMenu加到目标组件为该组件添加监听器4.布局管理器AWTSwing——BoxLayout(1)FlowLayout(流水布局)示例代码:FlowLayoutTest.java三种构造方法FlowLayout()默认构造方法FlowLayout(intalign)指定对齐方式FlowLayout(intalign,inthgap,intvgap)指定对齐方式及指定水平,垂直边距注:panel默认使用流水布局(2)BorderLayout(边界布局)示例代码:BorderLayoutTest2.java将容器分为东、南、西、北、中五个区域①FlowLayout②BorderLayout③GridLayout④GriBagLayout⑤CardLayout两种构造方法:BorderLayout()BorderLayout(inthgap,intvgap)用法:当增加组件时,应该使用BorderLayout类的几个静态的常量EAST(东)、NORTH(北)、SOUTH(南)、WEST(西)、CENTER(中)(3)GridLayout(网格布局)示例代码:GridLayoutTest.java两种构造方法:GridLayout(introws,intcols)指定行数、列数GridLayout(introws,intcols,inthgap,intvgap)指定行数列数与横纵边距与流水布局一样添加组件依次从左到右添加(4)绝对布局示例代码:NullLayoutTest.java步骤:setLayout(null)调用setBounds()方法,设置组件大小,位置setBounds(intx,inty,intwidth,intheight)X横坐标Y纵坐标width宽height高(5)BoxLayout示例代码:BoxLayoutTest.java1)构造方法BoxLayout(Containertarget,intaxis)其中axis有两个常量可供选择BoxLayout.X_AXIS(横向)BoxLayout.Y_AXIS(纵向)2)BoxLayout通常和Box容器结合使用,该容器默认使用BoxLayout布局Box对象提供两个静态方法createHorizontalBox()水平createVerticalBox()垂直3)横纵间距Box提供Glue、strut、RigidArea组件来设置间距。(5)CradLayout(卡片布局)示例代码:CardLayoutTest.java该布局像卡片将各个组件按添加顺序,叠放到一块,通过5个方法,选取不同的组件显示。5.事件处理(1)主要涉及3类对象1.EventSource(事件源)2.Event(事件)3.EventListener(事件监听器)事件处理流程:(2)不同事件需要不同的监听器监听(要实现不同的监听器接口)(3)事件适配器(4)实现监听器使用内部类示例代码:MultiListener.java使用外部类示例代码:MailerListener.java、SendMailer.java类本身作为事件监听器示例代码:SimpleEventHandler.java匿名内部类示例代码:AnonymousEventHandler.java6.AWT绘图Java开发中,制作小游戏会用到AWT的绘图功能,另外JavaEE项目中,绘制验证码也会用到这部分知识。(1)Component类中的绘图方法:paint(Graphicsg):绘制组件外观update(Graphicsg):调用paint()方法,刷新组件外观repaint():调用update()方法,刷新组件外观需要重绘组件,直接调用repaint()方法即可;paint()和update()通常被重写来绘制和更新三种方法调用关系如下:(2)使用Graphics类Graphics是一个抽象画笔对象,一个抽象的画笔对象,可在组件上绘制出各种图形,Graphics提供了下面几个方法来绘图注:drawXXX()绘制对应的图形,fillXXX()方法用于填充对应的图形;绘制字符串时有方法setColor()、setFont()设置画笔颜色与字体;drawImage()用于绘制位图。另外,AWT绘图时需继承Canvas类,并且重写paint方法。(3)位图处理:Graphics提供的drawImage()方法需要Image参数,通过该方法可以绘制出指定的位图Image和BufferedImageBufferedImage(intwidth,intheight,intimageType);getGraphics()返回Graphics;使用ImageIO输入输出位图:需要访问磁盘位图文件时,需要利用ImageIO工具类ImageIO并不支持所有格式的图形文件通过read()和write()完成位图文件的读写7.拖放功能的实现(1)拖放目标构造方法:DropTarget(Componentc,intops,DropTargetlistener)ops可选值:继承DropTargetAdapter其中包含5个事件管理器:创建拖放目标传入拖放监听器(2)拖放源步骤:调用getDefaultDragSource()方法createDefaultDragGestureRecognizer(Componentc,intactions,DragGestureListenerdgl)DragGestureListener()重写该接口的GestureRecognized()方法获得DragSourse对象将组件转换成拖放源为监听器提供实现类8.剪贴板实际上剪贴板操作与拖放操作有类似之处,他们的差别在于:拖放操作将数据从拖放源直接传递给拖放目标而剪贴板操作则是现将数据传递到剪贴板上:然后从剪贴板传递给目标。AWT提供两种剪贴板:本地剪贴板和系统剪贴板,相关操作的接口和类统一放在Java.awt.datatransfer(1)传递文本1)创建剪贴板系统剪贴板:Clipboardclipboard=Toolkit.getfaultToolkit.getSystemClipboard();创建本地剪贴板:Clipboardclipboard=newClipboard(java);2)将需要放入剪贴板中的字符串封装成StringSelection对象StringSelectionst=newStringSelection(targetstr);3)放调用剪贴板对象的SetContents()方法将封装的方法放入剪贴板,Clipboard.setContents(st,null);第二个参数是剪贴板的数据的所有者,一般设为null取clipboard.getdata(DataFlavor.StringFlavor),如果没有数据会有异常,所以取数据之前需判断剪贴板有无数据•使用剪贴板传递图像系统剪贴板:由于JDK只提供了一个封装字符串的Transferable接口实现类,我们需要自己编写一个imageSelection类。使用方法与文字剪贴操作一样。3)本地剪贴板传递Java对象同样自己编写一个localobjectselection类实现Transferable,并重写该接口三个方法。4)系统剪贴板传递Java对象编写一实现类实现Transferable,重写接口的三个方法,并需持有一个序列化对象二、Java图形界面编程-SWING1.概述2.顶级容器3.中间容器4.常用组件1、概述A.Java开发图形界面,大多数情况下使用Swing,很少使用AWTB.Swing是100%java实现,不再依赖本地GUI,可在不同的平台保持相同的外观,不会产生平台相关的BUG。并且有能力显示本地平台不支持的显示外观C.Swing提供的图形组件数量远远超过AWTD.Swing组件采用MVC的设计模式E.Swing组件层次E.AWT组件的Swing实现Swing为除了Canvas组件之外的所有AWT组件的实现,并且功能更加强大,相对于AWT的额外功能:可以为Swing组件设置提示信息ToolTipDemo.java很多组件除了用文字修饰自己之外,还可以使用图片。如:按钮、标签、菜单项CompIcon.java支持插拔式外观风格LAndF.java支持设置边框BorderDemo.java所有Swing组件默认启动双缓冲机制2、顶层容器包含JWindow、JDialog、JFrame、JApplet常用的是JDialog、JFrame、JappletJFrame(框架):表示主程序的窗口JDialog(对话框):每一个JDialog对象表示一个对话框,是二级窗口JApplet(小程序):在浏览器页面上显示3、中间容器A.可以包含其他组件的组件,如:一般容器JMenuBar、JToolBar、JPanel、JScrollPane等、特殊容器JTabbedPane、JSplitPane、JLayeredPane、JDesktopPane和JInternalFrame等B.JToolBar创建工具条在创建时可以指定的参数:name(名称)、orientation(方向)常用方法:JButtonadd(Actiona)添加工具按钮voidaddSeparate(Dimensions)添加分隔符voidsetFloatable(booleanb)设置是否可拖动voidsetMargin(Insetsm)设置外边距voidsetOrientation(into)设置工
本文标题:Java图形界面-AWT
链接地址:https://www.777doc.com/doc-4962835 .html