版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2015-11-17第9章
图形用户界面9.1图形用户界面概述图形用户界面主要由以下几部分组成:1.容器——可以容纳其他组件的组件。2.标准组件——图形用户界面的基本单位,不能包含其他的成分。3.布局管理器——管理各类组件在容器中的位置、组件的大小及排列顺序等。9.1.2java.awt软件包抽象窗口工具AWT(AbstractWindowTookit):包含了创建图形用户界面的所有组件基本图形元素组件类容器组件类布局管理器类
9.1.2java.awt软件包类层次结构9.1.2javax.swing软件包Swing是在AWT的基础上发展起来的,该软件包中的组件全部用Java语言编写,称为轻量级组件,目的就是使得组件在平台上的工作方式都相同,因此没有本地代码,与操作系统无关,这是swing和AWT的本质区别
9.1.2javax.swing软件包类层次结构9.1.3swing组件介绍1.Component类Component类的常用方法如下:(1)setSize(Dimension
d):调整组件的大小,使其宽度为d.width,高度为d.height(2)setSize(int
width,int
height):调整组件的大小,使其宽度为width,高度为height(3)setVisible(boolean
b):根据参数b的值显示或隐藏该Window2.Container类Container类的常用方法如下:(1)add(Componentcomp):将参数指定的组件追加到这个容器的尾部(2)remove(Componentcomp):从这个容器中去掉参数所指定的组件(3)setLayout(LayoutManager
mgr):设置这个容器的布局管理器3.Window类Window类是JWindow类的直接父类,它的常用方法如下:(1)dispose():释放由该Window、其子组件及其拥有的所有子组件使用的所有本机屏幕资源(2)pack():调整该窗口的大小,以适合其子组件的首选大小和布局(3)setBounds(int
x,int
y,int
width,int
height):移动组件并调整其大小(4)setBounds(Rectangle
r):移动组件并调整其大小,使其符合新的有界矩形r4.JComponent类javax.swing.JComponent是除顶层容器以外的所有swing组件的基类,它的常用方法如下所示:(1)getHeight():返回该组件的当前高度。(2)getWidth():返回该组件的当前宽度。(3)getX():返回组件原点的当前x坐标。(4)getY():返回组件原点的当前y坐标。(5)paint(Graphics
g):由Swing调用,用来绘制组件。(6)setBackground(Color
bg):设置该组件的背景色。(7)setForeground(Color
fg):设置该组件的前景色。(8)setFont(Font
font):设置该组件的字体。【表9-1】组件的含义9.2swing中常用组件9.2.1JFrameJFrame是带有标题和边框的顶层窗口。使用JFrame至少需要下面三个步骤:1.创建对象:创建对象的常用构造方法如下:(1)JFrame():构造一个初始时不可见的新窗口(2)JFrame(String
title):创建一个新的、初始不可见的、具有指定标题的Frame。参数代表标题字符串9.2.1JFrame2.设置大小:使用setSize()方法,该方法的定义为:publicvoidsetSize(int
width,int
height):调整组件的大小,width是组件的新宽度,单位是像素height是组件的新高度,单位是像素9.2.1JFrame3.设置可见:使用setVisible()方法,该方法的定义如下:publicvoidsetVisible(boolean
b):根据参数b
的值显示或隐藏此Window。b值如果为true,则使Window可见。如果为false,则隐藏此Window、此Window的子组件,以及它拥有的所有子级。9.2.2JWindowJWindow是一个容器,它没有标题栏、窗口管理按钮或者其他与JFrame关联的修饰,可以显示在用户桌面上的任何位置。9.2.3JDialog
JDialog是创建对话框窗口的主要类
【例9-2】importjavax.swing.*;classmy2{publicstaticvoidmain(Stringargs[]){JFramef=newJFrame("hello");f.setSize(300,300);f.setVisible(true);JDialogd=newJDialog(f,"mydialog",true);d.setSize(200,200);d.setVisible(true);}}9.2.4JButtonJButton是创建按钮的主要类。JButton类的主要构造方法如下:(1)JButton():创建不带有设置文本或图标的按钮(2)JButton(String
text):创建一个带文本的按钮9.2.5JTextFieldJTextField是创建单行文本框的主要类。JTextField的主要构造方法如下:(1)JTextField():构造一个新的TextField。(2)JTextField(int
columns):构造一个具有指定列数的新的空TextField。(3)JTextField(String
text):构造一个用指定文本初始化的新TextField。(4)JTextField(String
text,int
columns):构造一个用指定文本和列初始化的新TextField。
9.2.6JTextAreaJTextArea是显示纯文本的多行区域。默认情况下,换行属性设置为false(不换行)如果要在JTextArea对象中加入滚动条,则可以把多行文本框对象放在JScrollPane的内部。9.2.6JTextAreaJTextArea常用的构造方法如下:(1)JTextArea():构造新的TextArea。(2)JTextArea(int
rows,int
columns):构造具有指定行数和列数的新的空TextArea。(3)JTextArea(String
text):构造显示指定文本的新的TextArea。(4)JTextArea(String
text,int
rows,int
columns):构造具有指定文本、行数和列数的新的TextArea。9.2.7JLabelJLabel对象可以显示文本、图像或同时显示二者。JLabel类的常用构造方法如下:(1)JLabel(Icon
image):创建具有指定图像的JLabel实例(2)JLabel(String
text):创建具有指定文本的JLabel实例(3)JLabel(String
text,Icon
icon,int
horizontalAlignment):创建具有指定文本、图像和水平对齐方式的JLabel实例(4)JLabel(String
text,int
horizontalAlignment):创建具有指定文本和水平对齐方式的JLabel实例9.2.7JLabel9.2.8JComboBoxJComboBox是将按钮或可编辑字段与下拉列表组合的组件。用户可以从下拉列表中选择值,下拉列表在用户单击下拉三角形时显示。如果组合框处于可编辑状态,则组合框将包括用户在其中输入的字段。9.2.8JComboBoxJComboBox的常用构造方法如下:(1)JComboBox():创建具有默认数据模型的JComboBox。(2)JComboBox(Object[]
items):创建包含指定数组中元素的JComboBox。(3)JComboBox(Vector<?>
items):创建包含指定Vector中元素的JComboBox。9.2.8JComboBoxJComboBox的常用方法如下:(1)addItem(Object
anObject):为列表添加项。(2)getItemAt(int
index):返回指定索引处的列表项。(3)getSelectedItem():返回当前所选项。(4)removeItem(Object
anObject):从项列表中去掉某项(5)removeItemAt(int
anIndex):去掉anIndex处的项。(6)setEditable(boolean
aFlag):确定JComboBox字段是否可编辑。9.2.9JListJList是显示对象列表并允许用户选择一个或多个项的组件。JList可以方便的显示对象数组或对象Vector。JList不实现直接滚动,要创建一个滚动的列表,请将它作为JScrollPane的视图。JList的常用构造方法如下:(1)JList():构造一个具有空的、只读模型的JList。(2)JList(Object[]
listData):构造一个JList,使其显示指定数组中的元素。(3)JList(Vector<?>
listData):构造一个JList,使其显示指定Vector中的元素。9.2.9JList9.2.10菜单创建菜单主要用到三个类:JMenuBar、JMenu和JMenuItemJMenuBar是创建菜单栏的类,可以将JMenu对象添加到菜单栏,JMenu对象中的每一项用JMenuItem来创建9.2.10菜单9.2.10菜单JMenuBar的常用方法如下:(1)JMenuBar():创建新的菜单栏。(2)add(JMenu
c):将指定的菜单追加到菜单栏的末尾。JMenu的常用方法如下:(1)JMenu():构造没有文本的新JMenu。(2)JMenu(String
s):构造一个新JMenu,用提供的字符串作为其文本(3)add(JMenuItem
menuItem):将某个菜单项追加到此菜单的末尾。(4)addSeparator():将新分隔符追加到菜单的末尾。(5)remove(JMenuItem
item):从此菜单去掉指定的菜单项9.2.10菜单JMenuItem的常用方法如下:(1)JMenuItem():创建不带有设置文本或图标的JMenuItem。(2)JMenuItem(Action
a):创建从指定的Action获取其属性的菜单项。(3)JMenuItem(Icon
icon):创建带有指定图标的JMenuItem。(4)JMenuItem(String
text):创建带有指定文本的JMenuItem。(5)JMenuItem(String
text,Icon
icon):创建带有指定文本和图标的JMenuItem。(6)JMenuItem(String
text,int
mnemonic):创建带有指定文本和键盘助记符的JMenuItem。9.2.11JFileChooserJFileChooser是文件选择对话框。JFileChooser常用的方法如下:(1)addChoosableFileFilter(FileFilter
filter):向用户可选择的文件过滤器列表添加一个过滤器。(2)showOpenDialog(Component
parent):弹出一个“OpenFile”文件选择器对话框。(3)showSaveDialog(Component
parent):弹出一个“SaveFile”文件选择器对话框。(4)getSelectedFile():返回选中的文件。
FileFilterFileFilter是一个抽象类,JFileChooser使用它过滤显示给用户的文件集合。该抽象类的主要方法如下:(1)accept(File
f):此过滤器是否接受给定的文件(2)getDescription():此过滤器的描述。
9.3布局管理器布局管理器介绍组件的排列顺序、组件的大小和位置交给布局管理器类来管理。当窗口移动或大小发生变化时各组件的大小和位置也会随之变化,这也交给布局管理器类来管理。Java中常用的布局管理器类有FlowLayout、BorderLayout、GridLayout、CardLayout和GridBagLayout。这几种布局管理器类都在java.awt包中。9.3.1流布局FlowLayout流布局流布局用于安排有向流中的组件,类似于段落中的文本行。流的方向可以是从左向右、从右向左两种。流布局一般用来安排面板中的按钮。流布局FlowLayout的常用构造方法如下:(1)FlowLayout():构造一个新的FlowLayout,它是居中对齐的,默认的水平和垂直间隙是5个单位(2)FlowLayout(int
align):构造一个新的FlowLayout,它具有指定的对齐方式,默认的水平和垂直间隙是5个单位(3)FlowLayout(int
align,int
hgap,int
vgap):创建一个新的流布局管理器,它具有指定的对齐方式以及指定的水平和垂直间隙对齐方式对齐方式align参数的值必须是以下值之一:FlowLayout.LEFT:每一行组件都应该是左对齐的。FlowLayout.RIGHT:每一行组件都应该是右对齐的。FlowLayout.CENTER:每一行组件都应该是居中的。FlowLayout.LEADING:每一行组件都应该与容器方向的开始边对齐,例如,对于从左到右的方向,则与左边对齐。FlowLayout.TRAILING:每一行组件都应该与容器方向的结束边对齐,例如,对于从左到右的方向,则与右边对齐。
9.3.2边界布局BorderLayout边界布局介绍边界布局将容器分为五个区域:北、南、东、西、中,每个区域最多只能包含一个组件,并通过相应的常量进行标识:NORTH、SOUTH、EAST、WEST、CENTER。
边界布局介绍当使用边界布局将一个组件添加到容器中时,要使用这五个常量之一,例如:Panelp=newPanel();p.setLayout(newBorderLayout());p.add(newButton("Okay"),BorderLayout.SOUTH);如果未指定某个区域,默认是CENTER。因此下面这一句p2.add(newTextArea());等价于p.add(newTextArea(),BorderLayout.CENTER);边界布局BorderLayout类的常用构造方法如下:(1)BorderLayout():构造一个组件之间没有间距的新边界布局。(2)BorderLayout(int
hgap,int
vgap):构造一个具有指定组件间距的边界布局。水平间距由hgap指定,垂直间距由vgap指定。9.3.3网格布局GridLayout网格布局GridLayout类是一个布局管理器,它以矩形网格形式对容器的组件进行布置。容器被分成大小相等的矩形,一个矩形中放置一个组件。
常用构造方法1.GridLayout():创建具有默认值的网格布局,即每个组件占据一行一列。2.GridLayout(int
rows,int
cols):创建具有指定行数和列数的网格布局。3.GridLayout(int
rows,int
cols,int
hgap,int
vgap):创建具有指定行数和列数的网格布局。hgap是水平间距,vgap是垂直间距。9.3.4卡片布局CardLayout卡片布局CardLayout对象是容器的布局管理器。它将容器中的每个组件看作一张卡片。一次只能看到一张卡片,容器则充当卡片的堆栈。当容器第一次显示时,第一个添加到CardLayout对象的组件为可见组件。常用构造方法1.CardLayout():创建一个间距大小为0的新卡片布局2.CardLayout(int
hgap,int
vgap):创建一个具有指定水平间距和垂直间距的新卡片布局9.3.6空布局使用null布局可以达到精确定位和控制组件大小的要求。容器.setLayout(null)——设置布局管理器为nullsetBounds(int
x,int
y,int
width,int
height)——移动组件并调整其大小。由x和
y指定左上角的新位置,由
width和height指定新的大小。【例9-16】9.4事件处理9.4.1事件处理机制
事件处理机制分为三部分:事件源:发生事件的GUI组件就是事件源。如:单击按钮时,按钮就是事件源事件对象:当用户在界面上操作时,会产生各种事件对象,如:单击按钮,Java虚拟机自动产生ActionEvent的对象。按动键盘,自动产生KeyEvent的对象事件监听器:一些接口声明,在接口中定义事件处理方法。如:鼠标单击,编写事件处理器,需要实现ActionListener接口,在这个接口中有一个方法actionPerformed(ActionEvente)需要实现9.4.2事件处理方法
1)为可能产生事件的组件注册事件监听器,形式为:组件.addXXXListener(事件监听器)其中XXXListener为某个事件监听器的接口名称。如为按钮b1的单击事件注册事件监听器的语句如下:b1.addActionListener(m);单击按钮b1后将交给m对象(事件监听器的对象)去处理9.4.2事件处理方法2)编写一个类,实现相应的监听器接口,即实现监听器接口中声明的与程序设计意图有关的成员方法。实际上就是在监听器接口的实现过程中,将对该事件的处理语句写在方法体中,这样就实现了程序的功能。如下例中xx类实现了ActionListener接口,importjava.awt.event.*;classxximplementsActionListener{publicvoidactionPerformed(ActionEvente){…}}9.4.3事件类与事件监听器接口1、事件类(1)ActionEvent:当单击按钮、选择某项菜单或在文本框中回车时,产生ActionEvent事件。(2)ItemEvent:在单选框、复选框、列表框等选定或取消选定某项时产生ItemEvent事件。(3)KeyEvent:键盘事件。当按下、释放或键入某个键时,组件对象将生成KeyEvent事件。1、事件类(4)MouseEvent:鼠标事件。当按下、释放、单击鼠标按键,移动、拖动鼠标时生成MouseEvent事件。(5)TextEvent:当文本框和多行文本区域内容修改时生成TextEvent事件。(6)WindowEvent:窗口事件类。当打开、关闭、激活、停用、图标化或取消图标化Window对象时,或者焦点转移到Window内或移出Window时,由Window对象生成WindowEvent事件。2、事件监听器接口(1)ActionListener(例9-10):如果要对单击按钮、选择某项菜单或在文本框中回车等操作进行处理,可以编写事件处理器类该类需要实现ActionListener接口,该接口中有一个方法需要实现:actionPerformed(ActionEvent
e),该方法的方法体就是具体的操作2、事件监听器接口(2)ItemListener(例9-7):如果要对在单选框、复选框、列表框等组件中选定或取消选定某项等操作进行处理,可以编写事件处理器类该类需要实现ItemListener接口。该接口中有一个方法需要实现:
itemStateChanged(ItemEvent
e),该方法的方法体就是具体的处理过程2、事件监听器接口(3)KeyListener:如果按下、释放或键入某个键时需要执行处理,要编写相应的事件处理器类,该类需要实现KeyListener接口。该接口中有以下几个方法需要实现:keyPressed(KeyEvent
e):按下某个键时调用此方法keyReleased(KeyEvent
e):释放某个键时调用此方法keyTyped(KeyEvent
e):键入某个键时调用此方法2、事件监听器接口(4)MouseListener(例9-14):当按下、释放、单击鼠标按键,移动、拖动鼠标时如果需要进行相应的处理,则需要编写事件处理器类,该类需要实现MouseListener接口。该接口中有以下几个方法需要实现:mouseClicked(MouseEvent
e):鼠标按键在组件上单击(按下并释放)时调用mouseEntered(MouseEvent
e):鼠标进入到组件上时调用mouseExited(MouseEvent
e):鼠标离开组件时调用mousePressed(MouseEvent
e):鼠标按键在组件上按下时调用mouseReleased(MouseEvent
e):鼠标按钮在组件上释放时调用2、事件监听器接口(5)TextListener:当文本框和多行文本区域内容修改时如果需要进行相应的处理,则需要编写事件处理器类,该类需要实现TextListener接口。该接口中需要实现的方法如下:textValueChanged(TextEvent
e),该方法的方法体就是需要执行的具体处理过程2、事件监听器接口(6)WindowListener:如果要对窗口事件进行处理,需要编写事件处理器类实现WindowListener接口。该接口中有以下方法需要实现:windowActivated(WindowEvent
e):
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025中交二航局市政建设限公司招聘250人高频重点提升(共500题)附带答案详解
- 2025下半年江苏苏州市吴中区人民检察院速录员招聘3人高频重点提升(共500题)附带答案详解
- 2025下半年安徽黄山市祁门县事业单位招聘45人历年高频重点提升(共500题)附带答案详解
- 2025下半年四川遂宁经开区部分事业单位考试招聘工作人员73人高频重点提升(共500题)附带答案详解
- 2025下半年四川省遂宁市安居区事业单位招聘17人历年高频重点提升(共500题)附带答案详解
- 2025上半年浙江温州职业技术学院选聘152人历年高频重点提升(共500题)附带答案详解
- 2025上半年四川省自贡沿滩区事业单位招聘79人历年高频重点提升(共500题)附带答案详解
- 2025“才聚齐鲁成就未来”山东未来集团限公司招聘96人高频重点提升(共500题)附带答案详解
- 帽子及附件相关行业投资方案范本
- 铁路电气化玻璃钢施工协议
- 光刻技术员工作总结
- MOOC 组织学与胚胎学-华中科技大学 中国大学慕课答案
- 缝合线材料的可吸收性研究
- 2024届红河哈尼族彝族自治州绿春县小升初语文检测卷含答案
- GB/T 43700-2024滑雪场所的运行和管理规范
- 《3-6岁儿童学习与发展指南》知识竞赛参考题库500题(含答案)
- 幼儿园园长的园里园外融合教育
- 新型电力系统简介
- 海装风机故障培训课件
- 施工安全管理体系及安全保证措施样本
- 磁异法探测海底缆线分解课件
评论
0/150
提交评论