




已阅读5页,还剩87页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第12章 图形界面设计,2,本章主要内容,12.1 图形用户界面设计 12.2 图形用户界面工具包Swing 12.3 创建组件 12.4 布局管理器,3,12.1 图形用户界面设计,图形用户界面(Graphics User Interface,GUI) 用图形的方式,借助菜单。按钮等标准界面元素和鼠标操作,帮助用户方便地向计算机系统发出指令、启动操作,并将系统运行的结果同样以图形方式显示给用户的技术。 Java的GUI程序设计是Java程序设计的基础。,4,12.1 图形用户界面设计,Java提供的两个处理图形用户界面的类库: Java. awt包和javax. swing包,Sun已经提供了一个跨平台 GUI开发工具包java.awt(抽 象窗口工具箱),Sun又开发了一个新的 GUI开发工具包javax.swing 解决了awt中存在的本地化 问题,5,12.1 图形用户界面设计,AWT 和 Swing 是 Java 设计 GUI 用户界面的基础. 与AWT 的重量级组件不同, Swing 中大部分是轻量级组件。 正是这个原因, Swing 几乎无所不能, 不但有各式各样先进的组件, 而且更为美观易用.所以一开始使用 AWT 的程序员很快就转向使用 Swing 了。 但是因为 Swing 是架构在 AWT 之上的, 没有 AWT 就没有 Swing。所以程序员可以根据自己的习惯选择使用 AWT 或者是 Swing。 但是,最好不要二者 混用除开显示风格不同不说,还很可能造成层次 (Z-Order) 错乱,6,12.2图形用户界面工具包Swing,Java图形用户界面的基本元素包括: 用户界面组件(组件类) 事件处理模块(事件类) 图形和图像工具(图形类、图像类) 布局管理器(布局类) 它们主要都在javax.swing包中,Swing是Java包的一部分。,7,8,12.2.1 Swing组件分类,组件:构成图形用户界面的各种元素。 构建图形用户界面的类可以分成三组: 容器类(container class) 辅助类(helper class) 组件类(component class)。,9,12.2.1 Swing组件分类,容器类 容器类组件中可以包含其他组件,也可以包含其他容器。 容器又分为两种:顶层容器和非顶层容器。 顶层容器是可以独立的窗口,Swing的顶层容器有JFrame、JApplet和JDialog等。 非顶层容器,不是独立的窗口,它们必须位于窗口之内,非顶层容器包括JPanel及JScrollPanel等。,10,12.2.1 Swing组件分类,辅助类和组件类都属于非容器类组件不能包含其他组件的组件,其种类较多。 辅助类 辅助类是用来描述组件属性的,辅助类通常包含在java.awt包中,Swing组件不能取代AWT的全部类,只能替代AWT的GUI组件类,AWT辅助类保持不变。 组件类 所有Swing GUI组件类(除JFrame、JApplet和JDialog)都是JComponent类的子类,例如,JButton、JTextField、JTextArea、JComboBox、JList、JRadioButton和JMenu等。 Swing轻型组件分类参见教材P202 表12.1,11,12.2.1 Swing组件分类,一般独立应用程序主要是要框架JFrame作为容器,在JFrame上通过放置JPanel面板来控制图形界面的布局; 如果应用到浏览器中,则主要使用JApplet来做容器。JApplet是一个能够嵌入到浏览器中运行的特殊容器。,12,12.2.1 Swing组件分类,1. Swing容器的层次关系 一般的Swing窗口,实际上包含几个“层次”。,13,12.2.1 Swing组件分类,1. Swing容器的层次关系 一般的Swing窗口,实际上包含几个“层次”,各个层的关系如教材P202 图12.2所示。 顶层容器。是一个窗口容器对象,该对象包含了Swing窗口的各个层次,在该对象里面可以加入其它窗口对象。 根窗格。是在创建顶层容器后自动创建的,供Swing顶层容器在后台使用,是顶层容器中做包含的最内层,通常无法在这一层上做任何操作与处理。 分层窗格。加入分层窗格中的组件可以设置其图层层次,且不会被内容窗格中的对象屏蔽。是其它窗格的父级。,14,12.2.1 Swing组件分类,菜单栏。菜单栏被添加到分层窗格的顶部。是可选的。 内容窗格。是分层窗格中的某一层,是一个JPanel对象,在窗体中起着工作区的作用。可以放置大部分的可见组件。 玻璃窗格。主要用来产生绘图效果,以及用来触发窗口程序的各种事件。玻璃窗格浮在最上面,默认情况下是隐藏的。,15,12.2.1 Swing组件分类,16,12.2.1 Swing组件分类,2. 框架类JFrame 是Java应用程序的顶层容器。 JFrame是java.awt.Frame的扩展版本,是一个window子类,在使用Swing类库实现用户图形接口,必须继承该类。 JFrame容器包括窗口标题、窗口外观、窗口边界、调整窗口大小的图标、关闭和最小化窗口的图标。并且可以直接在容器上添加组件,如按钮、文本等。,17,12.2.1 Swing组件分类,构造方法: public JFrame() throws HeadlessException。 创建了一个新的容器窗口,默认该窗口是不可见的。 public JFrame(String title) throws HeadlessException 创建一个新的容器窗口,通过方法的参数设置窗口标题,该窗口默认是不可见的。,18,12.2.1 Swing组件分类,该类的常用方法(P203-204) getContentPane() 该方法返回一个框架对象,使用该框架对象来添加组件,如增加按钮、菜单、工具栏、列表框等组件。 setSize(int width ,int hight) 设置窗口尺寸、窗口大小以像素为单位计算。 getJMenuBar() 返回此窗体上设置的菜单栏。 setJMenuBar(JMenuBar menubar) 设置此窗体的菜单栏。 setIconImage(Image image) 设置要作为此窗口图标显示的图像。,19,例App12_1,辅助类,组件类,20,例App12_1,为什么在该实例中被没有显示背景色? JFrame默认采用了FlowLayout布局管理器,你的组件在该布局管理器中被塞满整个frame,挡住了背景。就是说,实际上JFrame还是有背景的一般用JFrame的时候要初始化一个JPanel,把组件放在JPanel里,然后把JPanel放到JFrame里,这样可以较好的控制组建位置等其他的东西。在这种方式下直接给JPanel设置setBackground就可以一直看到背景了,命令提示符环境,21,例App12_1_1,22,例App12_1_1,例App12_1_2,23,12.2.1 Swing组件分类,3. 面板类JPanel 面板是一种没有标题栏、没有边框的中间层容器,在该容器上可以放置其他组件如单选按钮、列表框等。还可以包含其他容器,如一个新的JPanel对象,从而方便地实现容器的嵌套。 在面板创建后是无法单独显示的。面板不是顶层容器,必须放到其他容器内,也可以放入另一个面板内。必须放在JFrame或Applet这样的顶层窗口中才可以显示。 一个界面只可以有一个JFrame窗体组件,但可以有多个JPanel面板组件,24,12.2.1 Swing组件分类,3. 面板类JPanel 该类的构造函数: JPanel():创建一个面板,并且该面板组件的布局管理器为FlowLayout()。 JPanel(LayoutManager layout):创建一个面板,且该面板设置了指定的布局管理器。布局管理器管理在容器上放置的组件,具体的内容会在12.4节详细介绍。,25,12.2.1 Swing组件分类,3. 面板类JPanel 常用方法:,JPanel默认的布局管理器是FlowLayout,可以使用setLayout()方法改变其默认布局。 也可以采用包含它的容器不同的布局管理器。,26,例App12_2,在框架中加入面板,27,例App12_2,在框架中加入面板,28,例App12_2,在框架中加入面板,29,12.2.1 Swing组件分类,4. 组件类 又称控制组件(控件),它里面不能包含其他组件。 作用:完成与用户的交互,包括接收用户的命令、接收用户输入的文本或用户的选择、向用户显示文本或图形。 常用控件:命令类、选择类、文字处理类等。,30,12.2.1 Swing组件分类,5.图形界面设计的步骤 创建组件(Component):创建组成界面的各种元素,如按钮、文本框等。 指定布局(Layout):根据具体需要排列界面上各元素的位置关系。 响应事件(Event):定义图形用户界面的事件和各界面元素对不同事件的响应,从而实现图形用户界面与用户的交互功能。,31,12.2.2 颜色类、字体类、图像图标类,1.颜色类Color 属于java.awt 每种颜色均看作是由红(R)、绿(G)、蓝(B)三色组成。 构造方法: Color (int r, int g, int b) 颜色常量值 Color.black , Color.blue , Color.gray , Color. red Color.white 例如 Color c = new Color(int rgb),参数取值0255,越大则表明这种颜色的成分越重。,32,12.2.2 颜色类、字体类、图像图标类,2.字体类Font 用来规范组件所用的字体样式、大小与字形等。 构造方法: Font (String font_name, int style, int size),字体名称,字形样式:PLAIN、BOLD、ITALIC,字号大小,33,Font类的成员方法 public string getName():获得字体的名称 public int getStyle():获得字体的样式 public int getSize():获得字体的大小 public boolean isPlain():若字体是正常型,则返回true public boolean isBold():若字体是粗体,则返回true public boolean isItalic() :若字体是斜体,则返回true,12.2.2 颜色类、字体类、图像图标类,34,12.2.2 颜色类、字体类、图像图标类,3.图标图像类ImageIcon Java语言使用javax.swing.ImageIcon类表示图标。表12.12给出了ImageIcon类的常用构造方法,表12.13给出了ImageIcon类的常用方法。,35,Java中Image类与ImageIcon类的区别,Image类一般尺寸过大,不适合作ImageIcon类。 ImageIcon imageIcon = new ImageIcon(“duke.gif”); / Icon由图片文件形成 Image image = imageIcon.getImage(); / 但这个图片太大不适合做Icon / 为把它缩小点,先要取出这个Icon的image ,然后缩放到合适的大小 Image smallImage = image.getScaledInstance(30,20,Image.SCALE_FAST); / 再由修改后的Image来生成合适的Icon ImageIcon smallIcon = new ImageIcon(smallImage); / 最后设置它为按钮的图片 JButton iconButton = new JButton(smallIcon);,36,Java中Image类与ImageIcon类的区别,而由ImageIcon类到Image类,可以通过: ImageIcon imageIcon = new ImageIcon(“duke.gif”); / Icon由图片文件形成 JFrame jf=null; jf.setImageIcon(ImageIcon.getImage();,37,12.3 创建组件,12.3.1 标签 12.3.2 命令按钮、复选框、单选按钮 12.3.3 文本编辑组件、滚动窗格 12.3.4 选项窗格,38,12.3.1 标签JLabel,标签用来在窗口中显示文字的控件 在整个应用程序中,不仅把 JLabel 用作文本描述,还将它用作图片描述。每当在 Swing 应用程序中看到图片的时候,它就有可能是 JLabel。JLabel 对于 Swing 初学者来说没有许多意料之外的方法。,39,12.3.1 标签JLabel,基本的方法 get/setText(): 获取/设置标签的文本。 get/seticon(): 获取/设置标签的图片。 get/setHorizontalAlignment(): 获取/设置文本的水平位置。 get/setVerticalAlignment(): 获取/设置文本的垂直位置。 get/setDisplayedMnemonic(): 获取/设置标签的访问键(下划线文字)。 get/setLableFor(): 获取/设置这个标签附着的组件,所以当用户按下 Alt+访问键时,焦点转移到指定的组件。,40,例App12_3,41,例App12_3,42,例App12_3,43,例App12_4,在框架窗口中加入指定大小的标签,并设置当鼠标悬停在标签上时给出相应的提示信息。 Swing中的几乎所有组件都是继承自JComponent,它提供了一个setToolTipText(String str)方法,来创建工具提示。,44,例App12_4,45,例App12_4,46,12.3.2 命令按钮、复选框、单选按钮,1. 命令按钮Jbutton 用户用鼠标单击它来控制程序运行的流程。 JButton创建后通过容器的add()将其放入容器。 构造方法及常用方法见教材P212,213 表12.16、12.17,47,例App12_5,48,例App12_5,49,12.3.2 命令按钮、复选框、单选按钮,2.复选框JCheckBox、单选按钮Jbutton JCheckBox可以单独使用,而单选按钮必须配合javax.swing包中的ButtonGroup类将其组成单选按钮组来使用。 如果有多个复选框,那么也需要ButtonGroup类将其组成复选框按钮组来使用。 重要的 ButtonGroup 方法是: add():添加 JCheckBox 或 JRadioButton 到 ButtonGroup。 getElements():获得 ButtonGroup 中的全部组件,允许对它们进行迭代,找到其中选中的那个。,50,例App12_6,51,例App12_6,注意:ButtonGroup不是java.awt.Component的子类,所以不能添加到容器中,52,例App12_6,53,例App12_6,54,12.3.3 文本编辑组件与滚动窗格,1.文本行组件JTextField 文本行组件JTextField主要用于接收用户键盘输入的文本。 设置文本的方法: get/setText(),用于获取/设置 JTextField 中的文本,55,12.3.3 文本编辑组件与滚动窗格,2. 密码文本行组件JPasswordField PasswordField主要用于输入密码 getEchoChar():获取每次字符输入时在 JPasswordField 中显示的字符。默认值为“*”。 setEchoChar():设置每次字符输入时在 JPasswordField 中显示的字符。 getPassword():这是从 JPasswordField 中获得口令的恰当方法,因为它返回一个包含口令的 char。为了保证恰当的安全性,数组应当被清为 0,以确保它不会保留在内存中。,56,12.3.3 文本编辑组件与滚动窗格,3.文本区组件JTextArea is/setLineWrap():设置在行过长的时候是否要自动换行。 is/setWrapStyleWord():设置在单词过长的时候是否要把长单词移到下一行。 文本区组件JTextArea 通常与滚动窗格组件JScrollPane一起使用。 4. 滚动窗格组件JScrollPane 用 JTextArea 调用 JScrollPane 的构造函数,这为 JTextArea 创建了在文本过长时滚动的能力: JScrollPane scroll = new JScrollPane( getTextArea() ); add(scroll);,57,例App12_7,58,例App12_7,59,例App12_7,60,12.3.4 选项窗格JTabbedPane,JTabbedPane组件中允许包含多个选项卡。 用户选取项目的一种组件,用户利用该组件来表JTabbedPane类的构造方法及常用方法见教材中表12.25、12.26 例如: JTabbedPane tab = new JTabbedPane(); tab.add(“Java”,new JLabel(“Java”); JTabbedPane类有多个addTab()方法,这里采用了其中一种,第一个参数是页签的标题,第二个参数是页签上放置的组件,如JLabel,当然可以是任意的组件。,61,例App12_8,62,例App12_8,63,例App12_8,64,12.4 布局管理器,布局管理即页面管理。页面管理(layout):指窗口上的组件遵循一定的规则来排列,并会随着窗口大小的变化来改变组件大小与位置的一种布局方式。 自动布局:当为一个容器指定一个布局管理器后,将一个组件加入该容器中时,布局管理器就能自动设置该组件的大小和位置。,65,12.4 布局管理器,java.awt包中共定义了五种布局管理器,每个布局管理器对应一种布局策略,分别是: 流式布局管理器FlowLayout 边界式布局管理器BorderLayout 卡片式布局管理器CardLayout 网格式布局管理器GridLayout 网格包布局管理器GridBagLayout。,66,12.4 布局管理器,java.Swing包提供的布局管理器有: 盒式布局管理器BoxLayout 重叠布局管理器OverlayLayout 弹簧布局管理器SpringLayout,67,12.4.1 流式布局管理器FlowLayout,布局策略 组件按照加入容器的先后顺序从左向右排列; 一行排满后就自动地转到下一行继续从左向右排列; 每一行中的组件都居中排列。 默认居中对齐,可以通过FlowLayout(int align)方法指定对齐方式,68,12.4.1 流式布局管理器FlowLayout,FlowLayout布局管理器是Panel、Applet和JPanel默认的布局管理方式。 布局管理器的容器中的组件大小不随容器大小的变化而改变. 当容器中的组件不多时,使用这种布局策略非常方便。 是JPanel默认的布局管理方式。 构造方法及常用方法见教材表12.2712.29 见教材例12.9,69,例App12_9,70,例App12_9,71,12.4.2 边界式布局管理器BorderLayout,将显示区域按地理方位分为东(East)、西(West)、 南(South)、北(North)、中(Center)五个区域。 将组件加入容器中,若没有指定区域,则默认为中间;若将组件加入到已被占用的位置,将会取 代原先的组件。,72,12.4.2 边界式布局管理器BorderLayout,利用add()添加组件时必须指出组件的摆放位置。 是JFrame、JApplet、JDialog默认的布局管理方式。 在BorderLayout类的定义中这5个区域用5个常量值表示:EAST、WEST、SOUTH、NORTH和CENTER。假设容器为cp组件为jb。则将组件添加到容器上的方式为: BorderLayout bl = new BorderLayout(); Cp.add(jb,BorderLayout.CENTER); 不是五个部分都必须添加 中间组件会自动调节大小,73,例App12_10,74,例App12_9,75,12.4.3 网格式布局管理器GridLayout,提供的页面布局规则是将容器的空间划分成若干行与列的网格形式,在容器上添加组件时,它们会按从左到右、从上到下的顺序在网格中均匀排列。 网格的行数和列数可以在创建GridLayout对象的构造方法里指定。若控件数正好是行列,则按行、列数放置;若控件数超过了行列,则先满足行。 利用GridLayout布局策略时,容器 中各组件的宽度相同,所有组件的 高度也相同,当容器尺寸发生变化时, 各组件的相对位置不变。 构造方法及常用方法见 教材表12.33、12.34,76,例App12_11,77,例App12_11,78,例App12_11,79,例App12_11
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 平移课件公开课
- 固态电池在光伏储能系统的应用创新与市场分析报告
- 环保产业技术升级2025年路径分析与产业创新动态趋势洞察报告
- 新能源行业安全管理现状剖析:2025年技术创新提升策略研究报告
- 平潭烟花爆竹安全培训课件
- 2025年工业互联网平台数据清洗算法在智能医疗设备数据管理中的对比分析报告
- 农发行扬州市江都区2025秋招数据分析师笔试题及答案
- 远程医疗技术对2025年偏远地区医疗服务能力提升的影响评估与实践报告
- 2025年新能源行业品牌创新与消费者体验研究报告
- 2025年江西新高考试题及答案
- 视频监控调取记录表
- 第2章 Windows 10操作系统
- 教研活动:幼儿园班级主题墙创设课件
- GB/T 42430-2023血液、尿液中乙醇、甲醇、正丙醇、丙酮、异丙醇和正丁醇检验
- 酒店住宿水单模板-可修改
- SF-三福的历史与文化 v2.0
- 幼儿园故事《小红帽》PPT模板
- GB/T 6723-2017通用冷弯开口型钢
- GB/T 4456-2008包装用聚乙烯吹塑薄膜
- 葫芦丝(初学教学)-课件
- 李家小学教师绩效考核实施方案
评论
0/150
提交评论