【教学课件】第四章图形编程.ppt
《【教学课件】第四章图形编程.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第四章图形编程.ppt(57页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章第四章 图形编程图形编程DrawingShap.javaDrawingShap.java4.1AWT与Swing简介一一.AWT.AWT工具包工具包javajava的抽象窗口工具包(的抽象窗口工具包(AWT:Abstract AWT:Abstract window Interface)window Interface)包含在包含在java.awtjava.awt包中,包中,它提供了许多用来设计它提供了许多用来设计GUIGUI的的组件类和容组件类和容器类器类基本基本AWTAWT库处理用户界面元素的方法是把库处理用户界面元素的方法是把这些元素的创建和行为委托给每个目标平台这些元素的创建和行为
2、委托给每个目标平台上的本地上的本地GUIGUI工具箱进行处理工具箱进行处理AWT的层次关系EventComponentGraphicsMenuComponButtonScrollBarContainerCanvasListCheckBoxLabelTextFieldTextAreaWindowFrameDialogFontAppletPanel二二.Java Swing.Java Swing SwingSwing:非基于对等体的:非基于对等体的GUIGUI工具箱工具箱SwingSwing具有更丰富并且更方便的用户具有更丰富并且更方便的用户界面元素集合界面元素集合SwingSwing对底层平台的
3、依赖更少对底层平台的依赖更少SwingSwing会带来交叉平台上的统一视觉会带来交叉平台上的统一视觉体验体验SwingSwing类被放在类被放在javax.Swingjavax.Swing包上包上Swing 组件层次关系ComponemtContainerWindowFrameDialogJFrameJDialogJComponentJPanelJLabelJScrollerJMenuBarJButtonJtext.三三.AWT.AWT与与SwingSwing的关系的关系对于使用过对于使用过JavaJava早期版本的人来说,大早期版本的人来说,大部分部分AWTAWT组件都有其组件都有其Swin
4、gSwing等价物等价物后者的名字一般是在前面后者的名字一般是在前面添加一个字母添加一个字母“J”“J”,如:,如:JButton,JFrame,JPanelJButton,JFrame,JPanel等等4.2组件和容器组件和容器一一.组件组件Java把由把由Component类的子类或间接子类类的子类或间接子类创建的对象称为一个组件创建的对象称为一个组件例:例:Button button1=new Button();例:例:TextField textfield=new TextField();例:例:Label label=new Label();二二.容器容器JavaJava把由把由co
5、ntainercontainer类的子类或间接子类创建类的子类或间接子类创建的对象称为一个容器的对象称为一个容器例:例:Frame fra=new Frame(“Frame fra=new Frame(“这是一个窗口这是一个窗口”)”);AppletApplet是是PanelPanel的子类,是的子类,是ContainerContainer的间接的间接子类子类AppletApplet本身也是一个容器本身也是一个容器三三.添加组件添加组件ComponentComponent类提供了一个方法:类提供了一个方法:add();add();例:例:fra.add(button);fra.add(butt
6、on);例:例:fra.add(TextField);fra.add(TextField);容器本身也可以看作是一个组件,因此容器本身也可以看作是一个组件,因此可以把一个容器添加到另一个容器里,可以把一个容器添加到另一个容器里,实现容器嵌套实现容器嵌套例:例:add(fra);add(fra);四。布局管理器四。布局管理器Java Java 采用非常优秀的概念来进行布局采用非常优秀的概念来进行布局一个容器内的所有组件都由一个布局管一个容器内的所有组件都由一个布局管理器来进行管理理器来进行管理JavaJava支持以下四种布局管理器支持以下四种布局管理器 FlowLayout FlowLayout
7、 BorderLayout BorderLayout CardLayout CardLayout GridBagLayout GridBagLayout在在JavaJava中,顶层窗口(没有包含在另一中,顶层窗口(没有包含在另一个窗口内的窗口)称为框架个窗口内的窗口)称为框架1.1.框架框架AWTAWT库中有一个基于对等体的库中有一个基于对等体的FrameFrame类对类对应着顶层应着顶层该类的该类的SwingSwing版本为版本为JFrame,JFrameJFrame,JFrame是是Frame Frame 子类子类例:框架是容器的例子例:框架是容器的例子 SimpleFrameTest.j
8、ava SimpleFrameTest.java五五.常用容器常用容器 import javax.swing.*;public class SimpleFrameTest public static void main(String args)SimpleFrame myframe=new SimpleFrame();myframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);myframe.show();class SimpleFrame extends JFrame public SimpleFrame()setSize(WIDTH,HEI
9、GHT);public static final int WIDTH=300;public static final int HEIGHT=200;2.2.定义相对框架定义相对框架通过调用通过调用toolkittoolkit来得到系统相关信息来得到系统相关信息例:CenteredFrameTest.java例:获得屏幕尺寸例:获得屏幕尺寸Toolkit kit=Toolkit kit=Toolkit.getDefaultToolkit();Toolkit.getDefaultToolkit();Dimension screenSize=Dimension screenSize=kit.getS
10、creenSize();kit.getScreenSize();int screenHeight=screenSize.height;int screenHeight=screenSize.height;int screenWidth=screenSize.width;int screenWidth=screenSize.width;class CenteredFrame extends JFrame public CenteredFrame()/get screen dimensions Toolkit kit=Toolkit.getDefaultToolkit();Toolkit kit=
11、Toolkit.getDefaultToolkit();Dimension screenSize=kit.getScreenSize();Dimension screenSize=kit.getScreenSize();int screenHeight=screenSize.height;int screenHeight=screenSize.height;int screenWidth=screenSize.width;int screenWidth=screenSize.width;/center frame in screen/center frame in screen setSize
12、(screenWidth/2,screenHeight/2);setSize(screenWidth/2,screenHeight/2);setLocation(screenWidth/4,screenHeight/4)setLocation(screenWidth/4,screenHeight/4)/set frame icon and title /set frame icon and title Image img=kit.getImage(icon.gif);Image img=kit.getImage(icon.gif);setIconImage(img);setIconImage(
13、img);setTitle(CenteredFrame);setTitle(CenteredFrame);3.3.常见类及方法常见类及方法APIAPIboolean isVisible()boolean isVisible()检查组件是否可见检查组件是否可见void setVisible(boolean b)void setVisible(boolean b)设置组件可见设置组件可见void setBounds(int x,int y,int void setBounds(int x,int y,int width,int height)width,int height)移动并缩放组件移动并缩
14、放组件Dimension getSize()Dimension getSize()得到组件的大小得到组件的大小void setSize(int width,int height)void setSize(int width,int height)void setSize(Dimension d)void setSize(Dimension d)把组件缩放到指定调度和宽度把组件缩放到指定调度和宽度 void toFrond()void toFrond()放在其它窗口前面放在其它窗口前面void toBack()void toBack()放在其它窗口后面放在其它窗口后面void void setR
15、esizable(booleansetResizable(boolean b)b)缩放框架缩放框架void void setTitle(StringsetTitle(String s)s)设置标题设置标题void void setIconImage(ImagesetIconImage(Image image)image)将将ImageImage用作图标用作图标 Dimension Dimension getScreenSizegetScreenSize()()得到用户屏幕大小得到用户屏幕大小内容窗格是用来添加组件的,获得内容内容窗格是用来添加组件的,获得内容窗格的代码如下:窗格的代码如下:在在
16、AWTAWT中可调用中可调用add()add()把组件直接添加把组件直接添加到到AWT FrameAWT Frame中中 ,但在但在SwingSwing中组件只中组件只能添加到内容窗格里能添加到内容窗格里六六.显示信息显示信息前面的例子中前面的例子中 ,信息都显示在控制台窗信息都显示在控制台窗口口,现在我们试着把信息显示到现在我们试着把信息显示到JFrameJFrame中中 JFrameJFrame的结构有点复杂,它包括:根窗格、的结构有点复杂,它包括:根窗格、布局窗格、透明窗格和布局窗格、透明窗格和内容窗格内容窗格 用户也可以创建一个画板,然后在画板上进用户也可以创建一个画板,然后在画板上进
17、行绘制,最后将画板添加到内容窗格里,此行绘制,最后将画板添加到内容窗格里,此时需要重写时需要重写paintComponentpaintComponent()()paintComponent(GraphicspaintComponent(Graphics g)g)是定义在是定义在JComponentJComponent中,每当该方法被调用时,系统就中,每当该方法被调用时,系统就自动产生一个自动产生一个GraphicsGraphics类型的参数,传递给类型的参数,传递给paintComponentpaintComponent方法中的参数方法中的参数g gContainer cp=getConten
18、tPane();Container cp=getContentPane();Component c=;Component c=;cp.add(c);cp.add(c);GraphicsGraphics类提供绘制图像和输出文本的方法类提供绘制图像和输出文本的方法创建一个画板创建一个画板class MyPanel extends JPanel public void paintComponent(Graphics g)super.paintComponent(Graphics g)g.drawString(“Hello!world”).MyPanel扩展了扩展了JPanel,但面板的背景颜色等工但
19、面板的背景颜色等工作要由作要由Jpanel来完成,来完成,super.paintComponent确保父类也参预绘制确保父类也参预绘制只要窗口重新绘制,只要窗口重新绘制,paintComponent()paintComponent()就被自动调用(在就被自动调用(在AWTAWT中是中是paint()paint()例例.在画板上输出信息在画板上输出信息NotHelloWorld.javaNotHelloWorld.javaclass NotHelloWorldFrame extends JFrameclass NotHelloWorldFrame extends JFrame public No
20、tHelloWorldFrame()public NotHelloWorldFrame()setTitle(NotHelloWorld);setTitle(NotHelloWorld);setSize(WIDTH,HEIGHT);setSize(WIDTH,HEIGHT);/add panel to frame /add panel to frame NotHelloWorldPanel panel=new NotHelloWorldPanel panel=new NotHelloWorldPanel();NotHelloWorldPanel();Container contentPane=g
21、etContentPane();Container contentPane=getContentPane();contentPane.add(panel);contentPane.add(panel);class NotHelloWorldPanel extends JPanelclass NotHelloWorldPanel extends JPanel public void paintComponent(Graphics g)public void paintComponent(Graphics g)super.paintComponent(g);super.paintComponent
22、(g);g.drawString(Not a Hello,World program,g.drawString(Not a Hello,World program,MESSAGE_X,MESSAGE_Y);MESSAGE_X,MESSAGE_Y);public static final int MESSAGE_X=75;public static final int MESSAGE_X=75;public public static final int MESSAGE_Y=100;static final int MESSAGE_Y=100;常用常用APIAPIContainer Contai
23、ner getContentPanegetContentPane()()返回返回JFrameJFrame的内容窗格的内容窗格 void void repainrepain()()重新绘制组件重新绘制组件void void repaint(intrepaint(int x,x,intint y,intwidth,inty,intwidth,int height)height)重新绘制组件的一部分重新绘制组件的一部分void paintComponent(Graphics g)void paintComponent(Graphics g)需要重写该方法来说明你的组件应如何绘制需要重写该方法来说明你
24、的组件应如何绘制5.3图形编程图形编程一一.2D.2D图形图形 1.2D1.2D对象对象 随着随着SDK2.0SDK2.0版的到来,版的到来,J2SEJ2SE包含了一包含了一个个Java 2DJava 2D库,该库实现了一个非常强大库,该库实现了一个非常强大的图形操作集的图形操作集如何获得如何获得Graphics 2DGraphics 2D类对象类对象该类是该类是GraphicsGraphics类的子类,通常可用类的子类,通常可用GraphicsGraphics对象转换而来对象转换而来.例:例:public void paintComponent(Graphics g)public void
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 第四 图形 编程
限制150内