java图形程序设计

上传人:ll****x 文档编号:243009729 上传时间:2024-09-13 格式:PPT 页数:25 大小:256KB
返回 下载 相关 举报
java图形程序设计_第1页
第1页 / 共25页
java图形程序设计_第2页
第2页 / 共25页
java图形程序设计_第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,创建一个框架,瓶,框架,(0,0),(x,y),屏幕,屏幕高度,屏幕宽度,框架,高度,框架宽度,4,在面板中显示信息,通常,在面板上绘制信息,然后将面板添加到框架中,向框架中添加组件,常用格式如下,Container contentPane=getContentPane( );/取得内容窗格对象,组件类 c=new ;,contentPane.add(c) ;,/JDK5.0中,组件类 c=new ,add(c) ;,5,在面板中显示信息,为了在面板中进行绘制,需要实现,(1)定义一个扩展JPanel的新类,(2)重写paintComponent方法,注意:永远不要自己调用该方法,如果需要强制重绘屏幕,调用repaint方法;也可 扩展JComponent类。,例:HelloWorld.java,class MyPanel extends JPanel,public void paintComponent(Graphics g),包含绘制图形、图像和文本的方法,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图形,直线,Line2D 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,startx,starty,width,height,9,2D图形,椭圆,/使用外接矩形的左上顶点坐标、宽度和高度,Ellipse2D e,=new Ellipse2D.Double(startx,starty,width,height);,/如果已经有外接矩形,Ellipse2D e=new Ellipse2D.Double( );,e.setFrame( rect);,/使用中心点和一个顶点坐标,e.setFrameFromCenter(centerx,centery,x1,y1 );,例:DrawTest.java,DrawArcTest.java,/使用左上顶点的坐标、宽度、高度、起始角度和跨度、闭合类型,Arc2D a=new Arc2D.Double(startx,starty,width,height,startangle,extent,arcangle,type );,弧,起始角度,跨度,o,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 “”;,Image image=ImageIO.read(new );,g.drawImage(image,x,y,null);/在左上角坐标为x,y的地方绘制图像,g.drawImage(image,x,y,width,height,null);/图像缩放到指定大小,例:ImageTest.java,14,AWT事件处理基础,基本概念,事件:用户对组件的一个操作,事件源:发生事件的组件,事件监听器:包含处理事件的方法,组件(事件源),事件监听器,1.事件监听器注册,外部作用,事件对象,3.生成事件对象,4.将事件对象传递,给事件监听器,2,15,AWT事件处理基础,基本格式,定义事件监听器类(实现某个监听器接口),注册事件监听器,eventSourceObject,.add,Event,Listener(,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,16,AWT事件,事件对象封装了事件源与监听器彼此通信的事件信息,常见事件类型,Action,Event,ItemEvent,AdjustmentEvent,KeyEvent,MouseEvent,MouseWheelEvent,FocusEvent,WindowEvent,按钮点击、菜单选择、选择列表项、在文本域中键入enter,用户调节滚动条,鼠标键被按下、释放、移动或拖动,某个组件获得焦点或失去焦点,用户从复选框或列表项中选择一项,一个键被按下或释放,鼠标滚轮被转动,窗口状态被改变,17,AWT事件,常见事件类型,EventObject,AWTEvent,ActionEvent,Adjustment,Event,Component,Event,ItemEvent,FocusEvent,InputEvent,PaintEvent,WindowEvent,KeyEvent,MouseEvent,MouseWheelEvent,18,AWT事件,监听器接口,Action,Listener,ItemListeer,MouseMotionListener,AdjustmentListener,KeyListener,WindowFocusListener,MouseListener,MouseWheelListener,WindowStateListener,FocusListener,WindowListener,常见事件类型,Action,Event,ItemEvent,AdjustmentEvent,KeyEvent,MouseEvent,MouseWheelEvent,FocusEvent,WindowEvent,19,AWT事件,适配器类,MouseAdapter,MouseMotionAdapter,FocusAdapter,WindowAdapter,KeyAdapter,注意,java中的所有事件的父类是java.util.EventObject,AWT事件类的父类为java.awt.AWTEvent,它是EventObject的直接子类,如果某事件监听器接口有多个方法,而实际只对其中的某个或几个方法感兴趣,可使用相对应的适配器类,AWT监听器接口、事件和事件源的列表见304页,例:AdapterTest.java,20,鼠标事件,鼠标事件监听器接口:,MouseListener: mouseClicked, mouseEntered , mouseExited ,mousePressed, mouseReleased,MouseMotionListener :mouseDragged,mouseMoved,适配器:,MouseAdapter,MouseMotionAdapter,例:MovingHelloWord.java, MouseTest.java,鼠标事件 MouseEvent,getClickCount( ),getX( ),getY( ),getSource( ),21,键盘事件,监听器接口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( );,22,焦点事件,同一时刻,一个窗口中最多只能有一个组件拥有焦点,组件得到焦点的方法:用户使用鼠标点击该组件;使用TAB键在各组件间切换,焦点监听器类必须实现FocusListener的focusGained和focusLost方法;或者直接继承FocusAdapter类,例: FocusTest.java,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);/1000毫秒,t.start( );,例:TimerTest.java,24,第五章 图形程序设计,小结,图形编程,创建一个框架,在面板中显示信息,2D图形(颜色,文本和字体),图像,AWT事件处理机制,事件处理基础,AWT事件,焦点事件,键盘事件,鼠标事件,25,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


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

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


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