java 图形程序设计.ppt_第1页
java 图形程序设计.ppt_第2页
java 图形程序设计.ppt_第3页
java 图形程序设计.ppt_第4页
java 图形程序设计.ppt_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 图形绘制 AWT事件处理机制 Swing用户界面组件,图形用户界面设计,图形绘制 创建一个框架 在面板中显示信息 2D图形、颜色、字体 图像 AWT事件处理机制 事件处理基础 AWT事件 鼠标事件 键盘事件,第五章 图形程序设计,创建一个框架,组件,基本组件(例如,JButton,JTextField) 容器(例如,JFrame,JPanel),顶层窗口 JFrame常用方法 setVisible,setTitle,setSize,setIconImage,setJMenuBar,setResizable, setLocation,setBounds, 例:SimpleFrameTest.j

2、ava 框架居中 例:CenteredFrameTest.java,框架,创建一个框架,瓶,框架,(0,0),(x,y),屏幕,屏幕高度,屏幕宽度,框架 高度,框架宽度,在面板中显示信息,通常,在面板上绘制信息,然后将面板添加到框架中 向框架中添加组件,常用格式如下,Container contentPane=getContentPane( );/取得内容窗格对象 组件类 c=new ; contentPane.add(c) ;,/JDK5.0中 组件类 c=new add(c) ;,在面板中显示信息,为了在面板中进行绘制,需要实现 (1)定义一个扩展JPanel的新类 (2)重写paintC

3、omponent方法 注意:永远不要自己调用该方法,如果需要强制重绘屏幕,调用repaint方法;也可 扩展JComponent类。,g.drawString( “Hello world”,75,100):,2D图形,Graphics中提供了很多方法绘制图形;Java 2D类库中实现了更强大的图形操作集,使用Graphics2D中提供的方法进行绘制。,public void paintComponent(Graphics g) Graphics2D g2=(Graphics2D )g; ,Java 2D库使用面向对象的方式组织几何形体。例如,分别有不同的类代表直线,矩形和椭圆:Line2D ,

4、 Rectangle2D , Ellipse2D,Rectangle rect=; g2.draw(rect);,2D图形,2D图形,Java 2D图形使用浮点数坐标,内部使用float类型,但考虑到操作float有时不方便,因而为每个图形类提供两个版本。,Rectangle2D.Float floatRect=new Rectangle2D.Float(10.0f,25.0f,22.0f,20.0f); Rectangle2D.Double doubleRect=new Rectangle2D.Double(10.0,25.0,22.0,20.0);,Rectangle2D floatRec

5、t= new Rectangle2D.Float(10.0f,25.0f,22.5f,20.0f); Rectangle2D doubleRect=new Rectangle2D.Double(10.0,25.0,22.5,20.0);,左上角位置,宽,高,2D图形, 直线,Line2D line=new Line2D.Double(startx,starty,endx,endy); g2.draw(line);,/使用左上顶点的坐标、宽度和高度 Rectangle2D doubleRect=new Rectangle2D.Double(startx,starty,width,height);

6、 /使用对角线上的两个顶点 Rectangle2D doubleRect=new Rectangle2D.Double( ); doubleRect.setFrameFromDiagonal(x1,y1,x2,y2);, 矩形,startx,starty,endx,endy,2D图形,颜色,颜色,setPaint方法(对于Graphics2D) java.awt.Color提供了13种标准颜色;通过创建Color对象来定制一种颜色;java.awt.SysetemColor中提供了更多用户系统的颜色,Graphics2D g2=; g2.setPaint(Color.RED); /使用Colo

7、r中的标准颜色 g2.setPaint(new Color(0,128,128);/参数为红绿蓝比例,0-255 g2.setPaint(SystemColor.windowText);/使用SystemColor中颜色 /将面板的背景颜色设置成用户桌面窗口使用的默认值 panel.setBackground(SystemColor.window);,颜色,填充图形,使用fill方法,可用一种颜色填充闭合的图形。,Rectangle2D rect=; g2.setPaint(Color.RED); g2.fill(rect);,例:FillTest.java,字体,文本和字体(Font),可以

8、使用字体名来指定字体 ; 可以通过调用GraphicsEnvironment类的getAvailableFamilyNames 方法,找到一个计算机中的可用字体; AWT定义了五个逻辑字体名: ScansSerif, Serif, Monospaced, Dialog, DialogInput,Font helvb14=new Font(“Helvetica”,Font.BOLD,14);/字体名,风格,大小 Font scansbold14=new Font(“ScansSerif”,Font.ITALIC,14); g2.setFont(scansbold14); g2.drawStrin

9、g(“hello”,75,100);,例:ListFont.java, FontTest.java,图像,图像, 可使用drawImage方法显示 ;,String filename=“”; Image image=ImageIO.read(new File(filename); g.drawImage(image,x,y,null);/在左上角坐标为x,y的地方绘制图像 g.drawImage(image,x,y,width,height,null);/图像缩放到指定大小,例:ImageTest.java,AWT事件处理基础,基本概念,事件:用户对组件的一个操作 事件源:发生事件的组件 事件

10、监听器:包含处理事件的方法,AWT事件处理基础,基本格式,定义事件监听器类(实现某个监听器接口) 注册事件监听器 eventSourceObject.addEventListener(eventListenerObject);,ButtonTest.java,ActionListener listener=; JButton button=new JButton(“OK”); button.addActionListener(listener);,class MyListener implements ActionListener public void actionPerformed(Act

11、ionEvent event) ,例:SimpleButtonTest.java, SimpleButtonExtendTest.java,AWT事件,事件对象封装了事件源与监听器彼此通信的事件信息,常见事件类型, ActionEvent ItemEvent AdjustmentEvent KeyEvent MouseEvent MouseWheelEvent FocusEvent WindowEvent,按钮点击、菜单选择、选择列表项、在文本域中键入enter,用户调节滚动条,鼠标键被按下、释放、移动或拖动,某个组件获得焦点或失去焦点,用户从复选框或列表项中选择一项,一个键被按下或释放,鼠标

12、滚轮被转动,窗口状态被改变,AWT事件,常见事件类型,EventObject,AWTEvent,ActionEvent,Adjustment Event,Component Event,ItemEvent,FocusEvent,InputEvent,PaintEvent,WindowEvent,KeyEvent,MouseEvent,MouseWheelEvent,AWT事件,监听器接口,ActionListener ItemListeer MouseMotionListener AdjustmentListener KeyListener WindowFocusListener MouseL

13、istener MouseWheelListener WindowStateListener FocusListener WindowListener,常见事件类型, ActionEvent ItemEvent AdjustmentEvent KeyEvent MouseEvent MouseWheelEvent FocusEvent WindowEvent,AWT事件,适配器类, MouseAdapter MouseMotionAdapter FocusAdapter WindowAdapter KeyAdapter,注意, java中的所有事件的父类是java.util.EventObje

14、ct AWT事件类的父类为java.awt.AWTEvent,它是EventObject的直接子类 如果某事件监听器接口有多个方法,而实际只对其中的某个或几个方法感兴趣,可使用相对应的适配器类 AWT监听器接口、事件和事件源的列表见304页,例:AdapterTest.java,鼠标事件, 鼠标事件监听器接口: MouseListener: mouseClicked, mouseEntered , mouseExited , mousePressed, mouseReleased MouseMotionListener :mouseDragged,mouseMoved 适配器: MouseAd

15、apter,MouseMotionAdapter,例:MovingHelloWord.java, MouseTest.java, 鼠标事件 MouseEvent getClickCount( ),getX( ),getY( ),getSource( ),键盘事件, 监听器接口KeyListener: keyPressed, keyReleased , keyTyped keyTyped方法报告输入的字符,只有能够生成一个Unicode字符的击键动作才会引起该方法的调用。因而,在keyPressed方法中检查光标键或其他命令键。 适配器KeyAdapter, 键盘事件 KeyEvent getK

16、eyChar( ),getKeyCode( ) Java明确区分字符和虚拟键码(与键盘的键一一对应,例如VK_A)。,例:KeyEventTest.java,KeyEventMovingHello.java,Sketch.java,public void keyPressed(KeyEvent event) int keyCode=event.getKeyCode(); if(keyCode=KeyEvent.VK_RIGHT) public void keyTyped(KeyEvent event) char c=event.getKeyChar( );,焦点事件, 同一时刻,一个窗口中最多

17、只能有一个组件拥有焦点 组件得到焦点的方法:用户使用鼠标点击该组件;使用TAB键在各组件间切换 焦点监听器类必须实现FocusListener的focusGained和focusLost方法;或者直接继承FocusAdapter类,例: FocusTest.java,定时器类Timer, 按照预定的频率触发ActionEvent事件 Timer timer=new Timer(1000, 事件监听器对象); /设置一个时间间隔,并告之到达时间间隔时需要做什么操作: start( );/启动 stop( );/停止 setDelay(int) ;/设置时间间隔,class TimerPrinter implements Ac

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论