《工学jaa学习》ppt课件

上传人:tia****nde 文档编号:70758028 上传时间:2019-01-18 格式:PPT 页数:82 大小:1.42MB
返回 下载 相关 举报
《工学jaa学习》ppt课件_第1页
第1页 / 共82页
《工学jaa学习》ppt课件_第2页
第2页 / 共82页
《工学jaa学习》ppt课件_第3页
第3页 / 共82页
《工学jaa学习》ppt课件_第4页
第4页 / 共82页
《工学jaa学习》ppt课件_第5页
第5页 / 共82页
点击查看更多>>
资源描述

《《工学jaa学习》ppt课件》由会员分享,可在线阅读,更多相关《《工学jaa学习》ppt课件(82页珍藏版)》请在金锄头文库上搜索。

1、Chapter 5 Java的图形用户界面,主要内容: 创建窗体,使用组件 设计界面,管理布局 绘制图形 事件编程等 重点掌握图形用户界面应用程序的设计方法和编程技巧。,GUI,图形用户界面(GUI) 使用图形的方式借助菜单、按钮等标准界面元素和鼠标操作,帮助用户方便的向计算机系统发出命令,并将系统运的结果以图形的方式显示给用户。,GUI设计,设计包括良好的业务逻辑和表现层。 用户界面设计的一般性原则包括:用户熟悉、一致性、意外最小化、可恢复性、用户指南、用户差异性等。 现在计算机用户认可的图形用户界面主要特征,主要集中在窗口、图标、菜单、指点、图形等方面。,Java与GUI,java.awt

2、包 称为抽象窗口工具集AWT(Abstract Window Toolkit),是使用Java进行GUI设计的基础 javax.swing包 Swing组件存放在javax.swing包中。几乎所有AWT组件对应有新功能更强的Swing组件。另外还加入了一些全新的组件。Swing组件在名称上前面多了一个字母“J” 。,考察GUI的构成,图形界面的各成分和元素 容器,控制组件等 各成分和元素间的外观联系 布局管理 各元素对不同事件的响应 事件处理机制,容器与控制组件,容器(Container):一系列相关组件的集合,是用于组织界面成分和元素的单元。它是一种比较特殊的组件,可以包含其他组件。 例如

3、:Window、Frame 控制组件:用于完成与用户的交互,是GUI的最小单元之一,里面不再包含其他的成分。 例如:Button、CheckBox、TextField,AWT组件与Swing组件,重量级组件 代码依赖于底层操作系统,并且存在一个对等组件做对应,将事件传递给对等组件处理。 轻量级组件 没有本地代码,不依赖操作系统的支持。 AWT组件被称为是重量级的 Swing组件经常被描述为轻量级的,因为其中大部分不需要操作系统本身所带窗口工具包的原生资源来生成 。,attention,Swing中通常含有和AWT中相对应的组件,区别是在其名称前加“J”, 如:ButtonJButton 在Sw

4、ing中,JFrame , JDialog , JWindow , JApplet这四个组件被称为重量级组件,它们必须使用到本地代码来显示窗口画面。 上述4个组件在Swing中被称为“最上层组件”,或者“顶层容器”,或“根面板”(JRootPane),AWT vs. Swing,Swing组件都是AWT的Container类的直接子类和间接子类。 AWT是Swing的基础,但是Swing组件纯java编写,属轻量级组件,具有一些AWT不可比拟的优势。,Swing容器树结构,Swing容器中加入组件,不能直接加入到JRootPane,必须加在JLayeredPane或是它的contentPane

5、上。 例如:加载组件到JFrame中 JFrame frame = new JFrame(); Container container = frame.getContentPane(); JButton button = new JButton(); JLabel label = new JLabel(); container.add(label); Container.add(button);,说明,getContentPane()语法格式如下: Public Container getContentPane() 该方法返回当前窗体的内容面板对象,这是窗体的工作区,所有的组件出了JMenuB

6、ar之外都要放到这个面板容器中。,小程序:窗体加按钮,程序示例: 结果:,在上述基础上再添加一个按钮 程序示例: 结果:,布局设计,Java中布局控制是通过为容器设置布局管理器来实现的。 没设置布局管理器的容器,其中的组件会相互覆盖、遮挡,影响使用。 每个布局管理器对应一种布局策略。,布局管理器,Java中的布局类型包括以下: FlowLayout(流式布局) BorderLayout (边界布局) GridLayout(网格布局) BoxLayout(盒式布局) CardLayout (卡片布局) GridBagLayout(网格包布局),FlowLayout布局管理器,FlowLayout

7、的构造函数有: FlowLayout( ):生成一个默认的流式布局 FlowLayout(int alignment):可以设定每一行组件的对齐方式 FlowLayout(int alignment,int horz,int vert):可以设定组件间的水平和垂直距离 Applet和面板的缺省布局,组件从左上角开始按从左到右、从上到下的方式排列,程序示例:,BorderLayout布局管理器,下面是BorderLayout所定义的构造函数: BorderLayout( ):生成默认的边界布局 BorderLayout(int horz,int vert): 可以设定组件间的水平和垂直距离,se

8、tLayout(new BorderLayout(); Button btnEast=new Button(“东“); Button btnWest=new Button(“西“); Button btnNorth=new Button(“北“); Button btnSouth=new Button(“南“); Button btnCenter=new Button(“中“); add(btnEast,BorderLayout.EAST); add(btnWest,BorderLayout.WEST); add(btnNorth,BorderLayout.NORTH); add(btnSou

9、th,BorderLayout.SOUTH); add(btnCenter,BorderLayout.CENTER);,GridLayout布局管理器,GridLayout的构造函数如下所示: GridLayout():生成一个单列的网格布局 GridLayout(int row,int col):生成一个设定行数和列数的网格布局 GridLayout(int row,int col,int horz,int vert):可以设置组件之间的水平和垂直间隔 用于将容器区域划分为一个矩形网格 组件按行和列排列,Button btn; / 声明按钮数组 String str=“1“,“2“,“3“,

10、“4“,“5“,“6“,“7“,“8“,“9“; setLayout(new GridLayout(3,3); btn=new Buttonstr.length; / 创建按钮数组 for(int i=0;istr.length;i+) btni=new Button(stri); add(btni);,CardLayout布局管理器,可存储几个不同的布局。 每个布局就像是一个卡片组中的一张卡片。 在一个给定的时间总会有一张卡片在顶层。 卡片通常为一个 Panel 对象。 每当需要许多面板切换,而每个面板需要显示为不同布局时,可以使用卡片布局。,GridBagLayout布局管理器,通过使用以

11、下语法容器可获得 GridBagLayout: GridBagLayout gb=new GridBagLayout(); ContainerName.setLayout(gb); 要使用此布局,必须提供各组件的大小和布局等信息。 GridBagConstraints 类中包含 GridBagLayout 类用来定位及调整组件大小所需的全部信息。 组件大小不必相同 组件按行和列排列 放置顺序不一定为从左至右和由上至下,BoxLayout布局管理器,按照从上到下(即Y轴)或者从左到右(即X轴)的顺序来依次排列组件。,中间容器,如: JPane , JScrollPane , JSplitPane

12、等 轻量级组件,用于容纳其他一般组件,而后作为整体安置在顶层容器中。 上述程序修改后如下:,添加事件响应,在窗口中添加一个exit按钮,单击时关闭窗口。,委托事件模型,事件处理机制中包含三个部分:事件源、事件对象、监听者 事件源:与用户进行交互的某个GUI组件 事件对象:封装相关事件信息。 监听者: 当事件产生时被通知的对象,负责实现事件监听接口。,包java.awt.event中定义的事件类型同时为AWT和Swing组件所使用。 一些新的Swing组件事件类型被定义于包javax.swing.event中。,GUI事件处理关键过程,为将要产生事件的组件注册监听者。 具体:调用事件源本身的方法

13、,如addActionListener()方法进行注册。 为监听者实现事件处理方法。 具体:实现监听接口中所定义的方法。,事件处理的实施,事件处理是如何被注册的? 如何寻找对应的事件处理方法?,java事件处理机制,Java中定义了一个普通的、可扩充的事件机制,这种机制能够: 对事件类型和传递的模型的定义和扩充提供一个公共框架,并适合于广泛的应用。 与Java语言和环境有较高的集成度。 事件能被描述环境捕获和触发。 能使其它构造工具采取某种技术在设计时直接控制事件,以及事件源和事件监听者之间的联系。,注意区别: 事件监听者接口(EventListener Interface)与事件监听者 事件

14、操纵方法都被定义在继承了java.util.EventListener类的EventListener接口中 。 任何一个类如果想操纵在EventListener接口中定义的方法,都必须以实现这个接口方式进行。这个类也就是事件监听者 。,自定义事件,P127 声明一个新的action事件 new ActionEvent (eventSource, ActionEvent.ACTION_PERFORMED, ”Description”),通知监听器使用如下规则: 使用ActionListener类型的listener域变量存储监听器的引用。 提供addActionLisener()方法初始化lis

15、tener域。 使用前述语法创建一个action事件,而后调用listener的performedAction()方法。,java事件生命周期,标签 JLabel,它既可以显示文本也可以显示图像 构造函数如下: JLabel(Icon icon):icon表示使用的图标 JLabel(String text,Icon icon,int align):text表示使用的字符串; icon表示使用的图标;align表示水平对齐方式,其值可以为:LEFT、RIGHT、CENTER。 其它常用方法: getText() setText(String text),按钮 JButton,可以使用以下任一构

16、造函数来创建按钮: JButton() : 新建一个空的按钮 JButton(Icon icon) JButton(String text) JButton(String text, Icon icon),文本框 JTextField,JTextField 组件允许输入或编辑单行文本 此类的构造函数包括: JTextField() JTextField(Document doc, String text, int columns) JTextField(int columns) JTextField(String text) JTextField(String text, int columns),复选框 JCheckBox,复选框用于为用户提供一组选项 JCheckBox 类具有下列构造函数: JCheckBox() JCheckBox(Icon icon) JCheckBox(Icon icon, boolean selected) JCheckBox(String te

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

当前位置:首页 > 高等教育 > 大学课件

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