已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
图形绘制AWT事件处理机制Swing用户界面组件,图形用户界面设计,1,图形绘制创建一个框架在面板中显示信息2D图形、颜色、字体图像AWT事件处理机制事件处理基础AWT事件鼠标事件键盘事件,第五章图形程序设计,2,创建一个框架,组件,基本组件(例如,JButton,JTextField)容器(例如,JFrame,JPanel),顶层窗口JFrame常用方法setVisible,setTitle,setSize,setIconImage,setJMenuBar,setResizable,setLocation,setBounds,例:SimpleFrameTest.java框架居中例:CenteredFrameTest.java,框架,3,创建一个框架,DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();intscreenWidth=screenSize.width;intscreenHeight=screenSize.height;,瓶,框架,(0,0),(x,y),屏幕,屏幕高度,屏幕宽度,框架高度,框架宽度,intx=(screenWidth-frameWidth)/2;inty=(screenHeight-frameHeight)/2;,4,在面板中显示信息,通常,在面板上绘制信息,然后将面板添加到框架中向框架中添加组件,常用格式如下,ContainercontentPane=getContentPane();/取得内容窗格对象组件类c=new;contentPane.add(c);,/JDK5.0中组件类c=newadd(c);,5,在面板中显示信息,为了在面板中进行绘制,需要实现(1)定义一个扩展JPanel的新类(2)重写paintComponent方法注意:永远不要自己调用该方法,如果需要强制重绘屏幕,调用repaint方法。,g.drawString(“Helloworld”,75,100):,6,2D图形,Graphics中提供了很多方法绘制图形;Java2D类库中实现了更强大的图形操作集,使用Graphics2D中提供的方法进行绘制。,publicvoidpaintComponent(Graphicsg)Graphics2Dg2=(Graphics2D)g;,Java2D库使用面向对象的方式组织几何形体。例如,分别有不同的类代表直线,矩形和椭圆:Line2D,Rectangle2D,Ellipse2D,Rectanglerect=;g2.draw(rect);,2D图形,7,2D图形,Java2D图形使用浮点数坐标,内部使用float类型,但考虑到操作float有时不方便,因而为每个图形类提供两个版本。,Rectangle2D.FloatfloatRect=newRectangle2D.Float(10.0f,25.0f,22.0f,20.0f);Rectangle2D.DoubledoubleRect=newRectangle2D.Double(10.0,25.0,22.0,20.0);,Rectangle2DfloatRect=newRectangle2D.Float(10.0f,25.0f,22.5f,20.0f);Rectangle2DdoubleRect=newRectangle2D.Double(10.0,25.0,22.5,20.0);,左上角位置,宽,高,8,2D图形,直线,Lineline=newLine2D.Double(startx,starty,endx,endy);g2.draw(line);,/使用左上顶点的坐标、宽度和高度Rectangle2DdoubleRect=newRectangle2D.Double(startx,starty,width,height);/使用对角线上的两个顶点Rectangle2DdoubleRect=newRectangle2D.Double();doubleRect.setFrameFromDiagonal(x1,y1,x2,y2);,矩形,startx,starty,endx,endy,9,2D图形,10,颜色,颜色,setPaint方法(对于Graphics2D)java.awt.Color提供了13种标准颜色;通过创建Color对象来定制一种颜色;java.awt.SysetemColor中提供了更多用户系统的颜色,Graphics2Dg2=;g2.setPaint(Color.RED);/使用Color中的标准颜色g2.setPaint(newColor(0,128,128);/参数为红绿蓝比例,0-255g2.setPaint(SystemColor.windowText);/使用SystemColor中颜色/将面板的背景颜色设置成用户桌面窗口使用的默认值panel.setBackground(SystemColor.window);,11,颜色,填充图形,使用fill方法,可用一种颜色填充闭合的图形。,Rectangle2Drect=;g2.setPaint(Color.RED);g2.fill(rect);,例:FillTest.java,12,字体,文本和字体(Font),可以使用字体名来指定字体;可以通过调用GraphicsEnvironment类的getAvailableFamilyNames方法,找到一个计算机中的可用字体;AWT定义了五个逻辑字体名:ScansSerif,Serif,Monospaced,Dialog,DialogInput,Fonthelvb14=newFont(“Helvetica”,Font.BOLD,14);/字体名,风格,大小Fontscansbold14=newFont(“ScansSerif”,Font.ITALIC,14);g2.setFont(scansbold14);g2.drawString(“hello”,75,100);,例:ListFont.java,FontTest.java,13,图像,图像,可使用drawImage方法显示;,Stringfilename=“”;Imageimage=ImageIO.read(newFile(filename);g.drawImage(image,x,y,null);/在左上角坐标为x,y的地方绘制图像g.drawImage(image,x,y,width,height,null);/图像缩放到指定大小,例:ImageTest.java,14,小结,AWT事件处理机制事件处理基础AWT事件鼠标事件键盘事件,15,AWT事件处理基础,基本概念,事件:用户对组件的一个操作事件源:发生事件的组件事件监听器:包含处理事件的方法,16,AWT事件处理基础,基本格式,定义事件监听器类(实现某个监听器接口)注册事件监听器eventSourceObject.addEventListener(eventListenerObject);,ButtonTest.java,ActionListenerlistener=;JButtonbutton=newJButton(“OK”);button.addActionListener(listener);,classMyListenerimplementsActionListenerpublicvoidactionPerformed(ActionEventevent),例:SimpleButtonTest.java,SimpleButtonExtendTest.java,17,AWT事件,事件对象封装了事件源与监听器彼此通信的事件信息,常见事件类型,ActionEventItemEventAdjustmentEventKeyEventMouseEventMouseWheelEventFocusEventWindowEvent,按钮点击、菜单选择、选择列表项、在文本域中键入enter,用户调节滚动条,鼠标键被按下、释放、移动或拖动,某个组件获得焦点或失去焦点,用户从复选框或列表项中选择一项,一个键被按下或释放,鼠标滚轮被转动,窗口状态被改变,18,AWT事件,常见事件类型,EventObject,AWTEvent,ActionEvent,AdjustmentEvent,ComponentEvent,ItemEvent,FocusEvent,InputEvent,PaintEvent,WindowEvent,KeyEvent,MouseEvent,MouseWheelEvent,19,AWT事件,监听器接口,ActionListenerItemListeerMouseMotionListenerAdjustmentListenerKeyListenerWindowFocusListenerMouseListenerMouseWheelListenerWindowStateListenerFocusListenerWindowListener,常见事件类型,ActionEventItemEventAdjustmentEventKeyEventMouseEventMouseWheelEventFocusEventWindowEvent,20,AWT事件,适配器类,MouseAdapterMouseMotionAdapterFocusAdapterWindowAdapterKeyAdapter,注意,java中的所有事件的父类是java.util.EventObjectAWT事件类的父类为java.awt.AWTEvent,它是EventObject的直接子类如果某事件监听器接口有多个方法,而实际只对其中的某个或几个方法感兴趣,可使用相对应的适配器类AWT监听器接口、事件和事件源的列表见304页,例:AdapterTest.java,21,鼠标事件,鼠标事件监听器接口:MouseListener:mouseClicked,mouseEntered,mouseExited,mousePressed,mouseReleasedMouseMotionListener:mouseDragged,mouseMoved适配器:MouseAdapter,MouseMotionAdapter,例:MovingHelloWord.java,MouseTest.java,鼠标事件MouseEventgetClickCount(),getX(),getY(),getSource(),22,键盘事件,监听器接口KeyListener:keyPressed,keyReleased,keyTypedkeyTyped方法报告输入的字符,只有能够生成一个Unicode字符的击键动作才会引起该方法的调用。因而,在keyPressed方法中检查光标键或其他命令键。适配器KeyAdapter,键盘事件KeyEventgetKeyChar(),getKeyCode()Java明确区分字符和虚拟键码(与键盘的键一一对应,例如VK_A)。,例:KeyEventTest.java,KeyEventMovingHello.java,Sketch.java,publicvoidkeyPressed(KeyEventevent)intkeyCode=event.getKeyCode();if(keyCode=KeyEvent.VK_RIGHT)publicvoidkeyTyped(KeyEventevent)charc=event.getKeyChar();,23,定时器类Timer,按照预定的频率触发ActionEvent事件Timertimer=newTimer(1000,事件监听器对象);/设置一个时间间隔,并告之到达时间间隔时需要做什么操作:start();/启动stop();/停止setDelay(int);/设置时间间隔,classTimerPri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年国家安全政策应用测试
- 2026年广东汕头一级造价工程师考试模拟题及答案:(建设工程计价)
- 年产3万吨肉牛浓缩饲料生产项目可行性研究报告
- 年产4万套食品机械不锈钢丝杠生产项目可行性研究报告
- 2026年电池研发招聘面试题及答案
- 2026年百时美施贵宝(中国)招聘面试题及答案
- 2026年AI工程师招聘面试题及答案
- 军校社会实践报告
- 关于班主任工作的心得体会
- 重大突发事件应急处置
- 第1课 开天辟地的大事变 第1课时 课件(内嵌视频)2026-2027学年道德与法治五年级上册统编版
- 公路水路典型运输和设施零碳试点工作方案
- 武汉人才集团招聘笔试题库2026
- 2026年机械产品检验工专项题库(附答案与解释)
- 成都市龙泉中学高一入学数学分班考试真题含答案
- XX国资委防汛防台风国有企业应急预案(国资救援)
- 2026年兰州药品检查员考试大纲
- 中国帕金森病治疗指南第五版更新总结2026
- 2026年成都市中考化学试卷(含答案)
- 护理实践中的法律风险与防范
- 2026重庆设计集团有限公司城市建设策略研究院招聘8人考试参考试题及答案解析
评论
0/150
提交评论