图形程序设计ppt课件

上传人:钟*** 文档编号:1508730 上传时间:2019-10-23 格式:PPT 页数:25 大小:850.50KB
返回 下载 相关 举报
图形程序设计ppt课件_第1页
第1页 / 共25页
图形程序设计ppt课件_第2页
第2页 / 共25页
图形程序设计ppt课件_第3页
第3页 / 共25页
点击查看更多>>
资源描述
图形绘制 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,创建一个框架,Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize( ); int screenWidth=screenSize.width; int screenHeight=screenSize.height;,瓶,框架,(0,0),(x,y),屏幕,屏幕高度,屏幕宽度,框架 高度,框架宽度,int x=(screenWidth-frameWidth)/2; int y=(screenHeight-frameHeight)/2;,4,在面板中显示信息,通常,在面板上绘制信息,然后将面板添加到框架中 向框架中添加组件,常用格式如下,Container contentPane=getContentPane( );/取得内容窗格对象 组件类 c=new ; contentPane.add(c) ;,/JDK5.0中 组件类 c=new add(c) ;,5,在面板中显示信息,为了在面板中进行绘制,需要实现 (1)定义一个扩展JPanel的新类 (2)重写paintComponent方法 注意:永远不要自己调用该方法,如果需要强制重绘屏幕,调用repaint方法。,g.drawString( “Hello world”,75,100):,6,2D图形,Graphics中提供了很多方法绘制图形;Java 2D类库中实现了更强大的图形操作集,使用Graphics2D中提供的方法进行绘制。,public void paintComponent(Graphics g) Graphics2D g2=(Graphics2D )g; ,Java 2D库使用面向对象的方式组织几何形体。例如,分别有不同的类代表直线,矩形和椭圆:Line2D , Rectangle2D , Ellipse2D,Rectangle rect=; g2.draw(rect);,2D图形,7,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 floatRect= new Rectangle2D.Float(10.0f,25.0f,22.5f,20.0f); Rectangle2D doubleRect=new Rectangle2D.Double(10.0,25.0,22.5,20.0);,左上角位置,宽,高,8,2D图形, 直线,Line line=new Line2D.Double(startx,starty,endx,endy); g2.draw(line);,/使用左上顶点的坐标、宽度和高度 Rectangle2D doubleRect=new Rectangle2D.Double(startx,starty,width,height); /使用对角线上的两个顶点 Rectangle2D doubleRect=new Rectangle2D.Double( ); doubleRect.setFrameFromDiagonal(x1,y1,x2,y2);, 矩形,startx,starty,endx,endy,9,2D图形,10,颜色,颜色,setPaint方法(对于Graphics2D) java.awt.Color提供了13种标准颜色;通过创建Color对象来定制一种颜色;java.awt.SysetemColor中提供了更多用户系统的颜色,Graphics2D g2=; g2.setPaint(Color.RED); /使用Color中的标准颜色 g2.setPaint(new Color(0,128,128);/参数为红绿蓝比例,0-255 g2.setPaint(SystemColor.windowText);/使用SystemColor中颜色 /将面板的背景颜色设置成用户桌面窗口使用的默认值 panel.setBackground(SystemColor.window);,11,颜色,填充图形,使用fill方法,可用一种颜色填充闭合的图形。,Rectangle2D rect=; g2.setPaint(Color.RED); g2.fill(rect);,例:FillTest.java,12,字体,文本和字体(Font),可以使用字体名来指定字体 ; 可以通过调用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.drawString(“hello”,75,100);,例:ListFont.java, FontTest.java,13,图像,图像, 可使用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,14,小结,AWT事件处理机制 事件处理基础 AWT事件 鼠标事件 键盘事件,15,AWT事件处理基础,基本概念,事件:用户对组件的一个操作 事件源:发生事件的组件 事件监听器:包含处理事件的方法,16,AWT事件处理基础,基本格式,定义事件监听器类(实现某个监听器接口) 注册事件监听器 eventSourceObject.addEventListener(eventListenerObject);,ButtonTest.java,ActionListener listener=; JButton button=new JButton(“OK”); button.addActionListener(listener);,class MyListener implements ActionListener public void actionPerformed(ActionEvent event) ,例:SimpleButtonTest.java, SimpleButtonExtendTest.java,17,AWT事件,事件对象封装了事件源与监听器彼此通信的事件信息,常见事件类型, ActionEvent ItemEvent AdjustmentEvent KeyEvent MouseEvent MouseWheelEvent FocusEvent WindowEvent,按钮点击、菜单选择、选择列表项、在文本域中键入enter,用户调节滚动条,鼠标键被按下、释放、移动或拖动,某个组件获得焦点或失去焦点,用户从复选框或列表项中选择一项,一个键被按下或释放,鼠标滚轮被转动,窗口状态被改变,18,AWT事件,常见事件类型,EventObject,AWTEvent,ActionEvent,Adjustment Event,Component Event,ItemEvent,FocusEvent,InputEvent,PaintEvent,WindowEvent,KeyEvent,MouseEvent,MouseWheelEvent,19,AWT事件,监听器接口,ActionListener ItemListeer MouseMotionListener AdjustmentListener KeyListener WindowFocusListener MouseListener MouseWheelListener WindowStateListener FocusListener WindowListener,常见事件类型, ActionEvent ItemEvent AdjustmentEvent KeyEvent MouseEvent MouseWheelEvent FocusEvent WindowEvent,20,AWT事件,适配器类, MouseAdapter MouseMotionAdapter FocusAdapter WindowAdapter KeyAdapter,注意, java中的所有事件的父类是java.util.EventObject AWT事件类的父类为java.awt.AWTEvent,它是EventObject的直接子类 如果某事件监听器接口有多个方法,而实际只对其中的某个或几个方法感兴趣,可使用相对应的适配器类 AWT监听器接口、事件和事件源的列表见304页,例:AdapterTest.java,21,鼠标事件, 鼠标事件监听器接口: MouseListener: mouseClicked, mouseEntered , mouseExited , mousePressed, mouseReleased MouseMotionListener :mouseDragged,mouseMoved 适配器: MouseAdapter,MouseMotionAdapter,例:MovingHelloWord.java, MouseTest.java, 鼠标事件 MouseEvent getClickCount( ),getX( ),getY( ),getSource( ),22,键盘事件, 监听器接口KeyListener: keyPressed, keyReleased , keyTyped keyTyped方法报告输入的字符,只有能够生成一个Unicode字符的击键动作才会引起该方法的调用。因而,在keyPressed方法中检查光标键或其他命令键。 适配器KeyAdapter, 键盘事件 KeyEvent getKeyChar( ),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( );,23,定时器类Timer, 按照预定的频率触发ActionEvent事件 Timer timer=new Timer(1000, 事件监听器对象); /设置一个时间间隔,并告之到达时间间隔时需要做什么操作: start( );/启动 stop( );/停止 setDelay(int) ;/设置时间间隔,class TimerPrinter implements ActionListener public void actionPerformed(ActionEvent event) . ,ActionListener listener=new TimerPrinter( ); Timer t=new Timer(1000,listener);/1秒 t.start( );,例:TimerTest.java,24,第五章 图形程序设计,小结,图形编程 创建一个框架 在面板中显示信息 2D图形(颜色,文本和字体) 图像 AWT事件处理机制 事件处理基础 AWT事件 焦点事件 键盘事件 鼠标事件,25,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!