图形程序设计课件

上传人:石磨 文档编号:183738468 上传时间:2021-06-12 格式:PPT 页数:25 大小:308.50KB
返回 下载 相关 举报
图形程序设计课件_第1页
第1页 / 共25页
图形程序设计课件_第2页
第2页 / 共25页
图形程序设计课件_第3页
第3页 / 共25页
图形程序设计课件_第4页
第4页 / 共25页
图形程序设计课件_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《图形程序设计课件》由会员分享,可在线阅读,更多相关《图形程序设计课件(25页珍藏版)》请在金锄头文库上搜索。

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

2、: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=(screenHeig

3、ht-frameHeight)/2;,4,图形程序设计,在面板中显示信息,通常,在面板上绘制信息,然后将面板添加到框架中 向框架中添加组件,常用格式如下,Container contentPane=getContentPane( );/取得内容窗格对象 组件类 c=new ; contentPane.add(c) ;,/JDK5.0中 组件类 c=new add(c) ;,5,图形程序设计,在面板中显示信息,为了在面板中进行绘制,需要实现 (1)定义一个扩展JPanel的新类 (2)重写paintComponent方法 注意:永远不要自己调用该方法,如果需要强制重绘屏幕,调用repaint方法

4、。,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);

5、,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.0

6、f); 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

7、 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(n

8、ew 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),可以使

9、用字体名来指定字体 ; 可以通过调用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

10、(“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事

11、件 鼠标事件 键盘事件,15,图形程序设计,AWT事件处理基础,基本概念,事件:用户对组件的一个操作 事件源:发生事件的组件 事件监听器:包含处理事件的方法,16,图形程序设计,AWT事件处理基础,基本格式,定义事件监听器类(实现某个监听器接口) 注册事件监听器 eventSourceObject.addEventListener(eventListenerObject);,ButtonTest.java,ActionListener listener=; JButton button=new JButton(“OK”); button.addActionListener(listener);

12、,class MyListener implements ActionListener public void actionPerformed(ActionEvent event) ,例:SimpleButtonTest.java, SimpleButtonExtendTest.java,17,图形程序设计,AWT事件,事件对象封装了事件源与监听器彼此通信的事件信息,常见事件类型, ActionEvent ItemEvent AdjustmentEvent KeyEvent MouseEvent MouseWheelEvent FocusEvent WindowEvent,按钮点击、菜单选择、

13、选择列表项、在文本域中键入enter,用户调节滚动条,鼠标键被按下、释放、移动或拖动,某个组件获得焦点或失去焦点,用户从复选框或列表项中选择一项,一个键被按下或释放,鼠标滚轮被转动,窗口状态被改变,18,图形程序设计,AWT事件,常见事件类型,EventObject,AWTEvent,ActionEvent,Adjustment Event,Component Event,ItemEvent,FocusEvent,InputEvent,PaintEvent,WindowEvent,KeyEvent,MouseEvent,MouseWheelEvent,19,图形程序设计,AWT事件,监听器接口

14、,ActionListener ItemListeer MouseMotionListener AdjustmentListener KeyListener WindowFocusListener MouseListener MouseWheelListener WindowStateListener FocusListener WindowListener,常见事件类型, ActionEvent ItemEvent AdjustmentEvent KeyEvent MouseEvent MouseWheelEvent FocusEvent WindowEvent,20,图形程序设计,AWT事

15、件,适配器类, MouseAdapter MouseMotionAdapter FocusAdapter WindowAdapter KeyAdapter,注意, java中的所有事件的父类是java.util.EventObject AWT事件类的父类为java.awt.AWTEvent,它是EventObject的直接子类 如果某事件监听器接口有多个方法,而实际只对其中的某个或几个方法感兴趣,可使用相对应的适配器类 AWT监听器接口、事件和事件源的列表见304页,例:AdapterTest.java,21,图形程序设计,鼠标事件, 鼠标事件监听器接口: MouseListener: mou

16、seClicked, 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)。,例:KeyE

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学研究

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号