第八章图形用户界面(Swing)方案.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第八章图形用户界面(Swing)方案.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第八 图形 用户界面 Swing 方案
- 资源描述:
-
1、第八章第八章 图形用户界面图形用户界面8.1 Java的图形用户界面简介的图形用户界面简介8.2 基本用户界面基本用户界面8.3 组件布局管理器组件布局管理器8.4 事件处理事件处理8.5 高级图形用户界面高级图形用户界面 图形用户界面(GUI)是一种方便的人机界面,它通过图形的方式,借助菜单、按钮等图形界面组件和鼠标操作,在用户和计算机之间进行交互。构成GUI的基本要素是组件,组件分为基本的控制组件和容器。组件(component)是构成GUI的基本要素,通过对不同事件的响应来完成和用户的交互或组件之间的交互。组件一般作为一个对象放置在容器(Container)中。容器是能容纳和排列组件的组
2、件,要显示组件,用户必须把它放置在容器里,通过容器的add()方法将组件加入到容器中。容器本身也是组件,因此可以将一个容器添加到另一个容器中实现容器的嵌套。8.1 Java的图形用户界面简介的图形用户界面简介 Java的GUI功能主要包含在java.awt包和javax.swing包中。Java抽象窗口工具包AWT(Abstract Window Toolkit)是java图形界面的工具箱。其中有一些类不是使用java语言写的,因此并没有达到真正的平台独立。为了实现真正的平台独立,产生了Swing包。Swing完全用Java语言编写,Swing界面在不同的平台上外观完全一样,真正做到了平台独立
3、。Swing提供了更完整的组件,引入了许多新的特性和功能。所有的Swing组件都以J开头,以便与老的AWT组件区分。Swing包定义了顶层容器和其它容器两种类型的组件。JWindow、JFrame、JDialog和JApplet都是顶层容器,它们分别是容器Window、Frame、Dialog和Applet的子类;其它容器是由JComponent组件类派生的子类如JButton、JPanel和JMenu等。顶层容器和其它容器的区别是:它包含一个内容面板,Swing组件可以加入到内容面板里面,但不能直接加入到顶层容器中。ComponentContainerAWT组件(Button等)Window
4、JComponentPanelJAppletJFrameJWindowJDialogJlabel,Jpanel,Jbutton等AppletFrameDialogAWT、Swing组件的层次继承关系java.awt 包含所有制作用户界面及绘图、图像所需的类 java.awt.color 处理颜色的类 java.awt.datatransfer 提供在应用软件内及其间数据转换所需的类 java.awt.dnd 提供拖(drag)及放(drop)处理 java.awt.event 事件处理 java.awt.font 关于字型的类 java.awt.geom 提供定义及操作2D几何对象所需的Jav
5、a 2D类 java.awt.im 输入方法结构类 java.awt.im.spi 提供界面供开发输入方法,可用于任何执行阶段环境 java.awt.image 图像处理类 java.awt.image.renderable 制造rendering-independent图像所需的类 java.awt.print 处理打印的类 AWT是由下列包所组成的。GUI接口的建立步骤 建立元件:在构造方法中,使用new()方法,通过构造方法的参数进行初始化。同时通过getContentPane获取容器的句柄。加入容器中:在构造方法中,使用容器句柄.add(元件)将元件加入容器中。配置版面:在构造方法中,
6、通过容器.setXXX(XXX),元件.setXXX(XXX),JFrame.setXXX(XXX)方法进行版面格式的配置。处理事件:在构造方法中,使用元件.addXXXListener()加入事件处理器。在构造方法外部定义事件处理器的功能。8.2 基本用户界面基本用户界面8.2.1 基本用户界面简介基本用户界面简介8.2.2 标签标签8.2.3 按钮按钮8.2.4 选项框选项框8.2.5 复选框和单选按钮复选框和单选按钮8.2.6 列表框列表框8.2.7 文本框文本框8.2.8 文本区文本区8.2.9 滚动条滚动条8.2.1 基本用户界面简介基本用户界面简介 Swing基本组件都是JComp
7、onent类的子类,这些组件可独立存在于Applet和Application中,提供了小巧灵活的交互功能。JComponent类包含了一些方法来设置组件的属性,如:改变背景颜色、定义显示文本的字体等。JComponent的常用方法如下:方 法 作 用 void setBackground(Color c)设置组件的背景颜色void setForeground(Color c)设置组件的前景颜色void setFont(Font f)设置组件的字体void isVisible()检查组件是否可见。组件初始为可见,但顶层容器JFrame是个例外void setVisible(boolean b)根
8、据参数b的值显示或隐藏组件void setEnable(boolean b)启用或禁止一个组件(默认是可使用状态)void isEnable检查该组件是否正显示在容器中void setLocation(int x,int y)或 设置组件的左上角位置。若组件为顶层容器,void setLocation(Point p)使用屏幕坐标;否则使用该容器的坐标Point getLocation()获得组件的左上角位置。Point getLocationOnScreen()获得组件左上角的位置。该值使用屏幕坐标void setSize(int width,int height)或 重新设置组件的大小vo
9、id setSize(Demension d)Dimension getSize()得到组件的当前大小viod setBounds(int x,int y,设置组件的大小。x,y设置组件在容器中的坐标,int width,int height)width,height设置组件的宽和高int getBounds().width获取组件的宽度int getBounds().height获取组件的高度int getBounds().x获取组件左上角的x坐标int getBounds().y获取组件左上角的y坐标void remove(Component c)移走容器中的组件cvoid removeA
10、ll()移走容器中的所有组件8.2.2 标签标签(JLabel)标签是用户不能修改,只能察看的文本显示区域,它主要是显示单行的字符串,起着传递消息的功能。每一个标签用一个JLabel类的对象表示,创建标签的同时应该说明这个标签的字符串。1.创建标签JLabel label=new JLabel(“”);2.构造函数JLabel(String label);构造一个显示内容为label的标签JLabel(Icon icon);构造一个带有图标的标签JLabel(String label,int alignment);构造一个显示字符串label的标签,并指定它的对齐方式:LEFT(左对齐)CEN
11、TER(居中对齐)RIGHT(右对齐)JLabel(String label,Icon icon,int alignment);用于构造一个带有指定文本、图标 和对齐方式的标签3.常用方法 public int getAlignment()返回当前的对齐方式 public String getText()返回当前显示的内容 public Icon getIcon()返回标签的图标 public void setAlignment(int alignment)设置对齐方式 public void setText(String label)设置显示的字符串 public void setIcon(
12、Icon icon)设置标签的图标4.举例(LabelDemo.java)JApplet是一个顶层容器,Swing组建不能直接加入到JApplet,必须将组建加入到顶层容器的内容面板中。要获得一个内容面板,可使用getContentPane()方法,要设置它的内容面板可使用setContentPane()方法。8.2.3 按钮(按钮(JButton)按钮(button)是用来触发特定动作的组件。在Java中提供多种形式的按钮,其中主要是鼠标单击触发的按钮。按钮类JButton直接继承组件类JComponent。1.创建按钮JButton button=new JButton(“”);2.构造函
13、数JButton();创建一个没有文本的按钮JButton(String label);创建一个有指定文本的按钮JButton(Icon icon);创建一个有显示图标的按钮JButton(String label,Icon icon);创建一个有指定文本和图标的按钮3.常用方法 public String getText()返回按钮的名字 public void setText(String label)为按钮设置名字 public Icon getIcon()返回按钮的图标 public void setIcon(Icon icon)为按钮设置图标4.举例(ButtonDemo.java)
14、8.2.4 选项框选项框 选项框分为复选框(JCheckBox)和单选按钮(JRadioButton),它们都有选中和不选中两种取值,可以通过点击来改变他们的状态。复选框可以让用户作出多项选则。单选按钮是一组按钮,用户只能从中选择一个。它们是具有开关或真假值状态的按钮。1.创建复选框JCheckBox checkBox=new JCheckbox();2.构造函数JCheckBox(String s);创建一个带有文本标签s的复选框JCheckBox(String s,boolean b);创建一个有标签的复选框。若b为true,表示复选框被选中JCheckBox(Icon icon);创建一
15、个带有图标的复选框JCheckBox(Icon icon,boolean b);创建一个有图标的复选框。若b为true,表示复选框被选中JCheckBox(String s,Icon icon);创建一个带有文本标签和图标的复选框JCheckBox(String s,Icon icon,boolean b);创建一个有标签和图标的复选框。若b为true,表示复选框被选中3.常用方法 public boolean isSelected()返回复选框的状态 public void setSelected(boolean state)设置复选框的状态4.单选按钮(JRadioButton)单选按钮的
16、用法同复选框。由于单选按钮是在一组按钮中选择一个,所以要对单选按钮分组。为了创造单选按钮组,首先用类ButtonGroup创建按钮组对象,然后用add()方法将单选按钮加入到该按钮组中。5.举例(ChoiceDemo.java)8.2.5 组合框(组合框(JComboBox)组合框又称下拉列表框,是一个能从列表中选择某个单独项的组件。当用户点击它时,所有选项将被弹出,用户可从中做出选择。组合框分为可编辑和不可编辑的两种,默认为不可编辑,可使用setEditable(true)将其变为可编辑的,用户既可以从列表中选择也可以在附带的文本框中直接输入文本。1.创建组合框 首先使用构造方法JCombo
17、Box()创建组合框对象,然后调用方法addItem(Object)将表项加入到列表中。8.2.5 组合框(组合框(JComboBox)2.常用方法void setEditable(boolean b)设置组合框的编辑状态(true为可编辑的,false为不可编辑的)void addItem(Object item)向列表中加入表项itemvoid insertItemAt(Object item,int index)将表项item插入到列表的指定位置void removeItem(Object item)从列表中删除表项itemvoid removeAllItems()删除列表中的所有表项O
18、bject getItemAt(int index)返回指定索引位置的表项的文本int getItemCount()返回列表中的表项数目int getSelectedIndex()返回当前选项的索引位置Object getSelectedItem(int index)返回当前被选中的表项void setSelectedIndex(int index)选中在指定索引位置的表项void setSelectedItem(Object)选中列表中的指定表项void setMaxinumRowCount(int max)设置一次能显示出来的列表行数3.举例(ComboBoxDemo.java)8.2.6
19、 列表框列表框(JList)列表框(JList)可以使用户选择多个选项,而且列表框的所有选项都是可见的。1.创建列表框 建立一个列表框应首先建立一个字符串数组,然后将数组传递给JList构造器:String str=“green”,”red”,”blue”;JList list=new JList(str);当选项数目超过了列表框的可见区域的时候,列表框的右侧不会出现一个滚动条,不能提供自动滚动条功能。如果希望列表框能滚动,则需要将列表框加入到滚动面板中,滚动面板是能为其它组件提供滚动功能的容器。创建滚动面板可使用如下两种构造方法:JScrollPane(Component):创建一个包含组件
20、的滚动面板,默认情况下,如果组件没有超出面板本身大小,则滚动条不出现。JScrollPane(Component,int,int):创建一个带有组件、垂直滚动条配置和水平滚动条配置的滚动面板。可利用如下方法对滚动条进行配置:8.2.6 列表框列表框(JList)(1)HORIZONTAL_SCROLLBAR_ALWAYS:水平滚动条始终出现(2)HORIZONTAL_SCROLLBAR_AS_NEEDED:只有需要时,水平滚动条才出现(3)HORIZONTAL_SCROLLBAR_NEVER:水平滚动条不出现(4)VERTICAL_SCROLLBAR_ALWAYS:垂直滚动条始终出现(5)VE
21、RTICAL_SCROLLBAR_AS_NEEDED:只有需要时,垂直滚动条才出现(6)VERTICAL_SCROLLBAR_NEVER:垂直滚动条不出现2.常用方法setVisibleRowCount(int n):设置列表框能显示的选项数。默认显示8个选项setSelectionMode(int mode):确定选择方式。参数mode有三种选择方式:SINGLE:单选SINGLE_INTERVAL_SELECTION:选一项或某个范围的多个相邻选项MULTIPLE_INTERVAL_SELECTION:多选Object getSelectedValue():返回选定的值,若选择方式为空,则
22、返回nullgetSelectedValues():返回选定的第一个值。如果选择方式为空,则返回Object一个空数组3.举例(ListDemo.java)8.2.7 文本框(文本框(JTextField)文本框(JTextField)是单行的文本输入区域。1.创建文本框JTextField textField=new JTextField(“”);2.构造函数JTextField();构造一个默认长度的文本框JTextField(int n);创建一个能容纳n个字符的文本框JTextField(String text);创建一个带有初始字符串text的文本框JTextField(String
23、 text,int n);创建一个带有初始字符串并且能容纳指定长度的文本框3.常用方法 void setEditable(boolean)指定文本组件是否可编辑 boolean isEditable()返回文本组件是否可编辑的状态 void setText(String text)设置文本组件的文本内容 String getText()获取文本组件的文本内容 String getSelectedText()获取文本组件被高亮度显示的文本内容4.密码框 文本框有一个特殊的子类JPasswordField,称为密码域,即口令文本框。在JPasswordField对象中输入的文本会被其它指定的字符所
24、替代,密码域常用来在Java程序中输入口令。密码域的构造方法为JPasswordField(String text,int n),其中text表示要显示的文本,n表示文本列数。创建一个密码域后可调用方法setEchoChar(char)设置用户输入字符的回显字符(默认为“*”),也可调用getPassword()返回密码域中的文本,存放在一个字符数组中。5.举例(TextFieldDemo.java)8.2.8 文本区(文本区(JTextArea)文本框只能显示一行内容,有时满足不了程序开发的需要,对于多行或大段文本的显示需要使用Java提供的文本区(JTextArea)来实现。1.创建文本区
25、JTextArea ta=new JTextArea();2.构造函数JTextArea();创建一个系统默认大小的文本区JTextArea(int row,int columns);创建一个指定行数和列数的文本区JTextArea(String text);创建一个包含初始内容的文本区JTextArea(String text,int row,int columns);创建一个包含初始内容并且指定行数和列数的文本区3.常用方法 public void append(String str)在文本区的最后面添加文本 public int getRows()返回文本区的行数 public void
展开阅读全文