JAVA 图形用户界面设计.ppt
《JAVA 图形用户界面设计.ppt》由会员分享,可在线阅读,更多相关《JAVA 图形用户界面设计.ppt(73页珍藏版)》请在三一办公上搜索。
1、第15章图形用户界面设计,15.1 Java Swing概述,Java的java.awt包,即Java抽象窗口工具包(AWT:Abstract Window Toolkit)提供了许多用来设计GUI的组件类 在学习GUI编程时,必须很好地理解掌握两个概念:容器类(Container)和组件类(Component)。javax.swing包中JComponent类是java.awt包中Container类的一个直接子类、是Component类的一个间接子类,学习GUI编程主要是学习掌握使用Component类的一些重要的子类。,Java把Component类的子类或间接子类创建的对象称为一个组件
2、。Java把Container的子类或间接子类创建的对象称为一个容器。可以向容器添加组件。Container类提供了一个public方法:add(),一个容器可以调用这个方法将组件添加到该容器中。容器调用removeAll()方法可以移掉容器中的全部组件;调用remove(Component c)方法可以移掉容器中参数c指定的组件。注意到容器本身也是一个组件,因此可以把一个容器添加到另一个容器中实现容器的嵌套。,15.2 窗口,Java提供的JFrame类的实例就是一个底层容器(JDialog类的实例也是一个底层容器,见后面的15.6),即通常所称的窗口。其他组件必须被添加到底层容器中,以便借
3、助这个地层容器和操作系统进行信息交互 JFrame类是Container类的间接子类。当需要一个窗口时,可使用JFrame或其子类创建一个对象,15.2.1 JFrame常用方法,JFrame()创建一个无标题的窗口。JFrame(String s)创建标题为s的窗口。public void setVisible(boolean b)设置窗口是否可见,窗口默认是不可见的。public void dispose()撤消当前窗口,并释放当前窗口所使用的资源。public void setDefaultCloseOperation(int operation)该方法用来设置单击窗体右上角的关闭图标后
4、,程序会做出怎样的处理。,15.2.2 菜单条、菜单、菜单项,窗口中的菜单条、菜单、菜单项是我们所熟悉的组件,菜单放在菜单条里,菜单项放在菜单里。,1菜单条JComponent类的子类JMenubar负责创建菜单条,即JMenubar的一个实例就是一个菜单条。JFrame类有一个将菜单条放置到窗口中的方法:setJMenuBar(JMenuBar bar);该方法将菜单条添加到窗口的顶端,需要注意的是,只能向窗口添加一个菜单条。,2菜单JComponent类的子类JMenu负责创建菜单,即JMenu的一个实例就是一个菜单。3菜单项JComponent类的子类JMenuItem负责创建菜单项,即
5、JMenuItem的一个实例就是一个菜单项。,4嵌入子菜单JMenu是JMenuItem的子类,因此菜单本身也是一个菜单项,当把一个菜单看作菜单项添加到某个菜单中时,称这样的菜单为子菜单。5菜单上的图标图15.3 带菜单的窗口为了使菜单项有一个图标,可以用图标类Icon声明一个图标,然后使用其子类ImageIcon类创建一个图标,15.3 常用组件与布局,可以使用JComponent的子类JTextField创建文本框。文本框的特点是允许用户在文本框中输入单行文本。,15.3.1 常用组件,1文本框使用JComponent的子类JTextField创建文本框,允许用户在文本框中输入单行文本。2
6、文本区使用JComponent的子类JTexArea创建文本区,允许用户在文本区中输入多行文本。3按钮使用JComponent的子类JButton类用来创建按钮,允许用户单击按钮。,4标签使用JComponent的子类JLabel类用来创建标签,标签为用户提供信息提示。5选择框使用JComponent的子类JCheckBox类用来创建选择框,为用户提供多项选择。选择框的右面有个名字,并提供两种状态,一种是选中,另一种是未选中,用户通过单击该组件切换状态。6单选按钮使用JComponent的子类JRadioButton类用来创建单项选择框,为用户提供单项选择。,7下拉列表使用JComponent
7、的子类JComboBox类用来创建下拉列表,为用户提供单项选择。用户可以在下拉列表看到第一个选项和它旁边的箭头按钮,当用户单击箭头按钮时,选项列表打开。8密码框可以使用JComponent的子类JPasswordField创建密码框。允许用户在密码框中输入单行密码,密码框的默认回显字符是*。密码框可以使用setEchoChar(char c)重新设置回显字符,用户输入密码时,密码框只显示回显字符。密码框调用char getPassword()方法可以返回实际的密码。,15.3.2 常用容器,1JPanel 面板我们会经常使用JPanel创建一个面板,再向这个面板添加组件,然后把这个面板添加到其
8、它容器中。JPanel面板的默认布局是FlowLayout布局。2滚动窗格JScrollPane滚动窗格只可以添加一个组件,可以把一个组件放到一个滚动窗格中,然后通过滚动条来该组件。JTextArea不自带滚动条,因此我们就需要把文本区放到一个滚动窗格中,3拆分窗格JSplitPane顾名思义,拆分窗格就是被分成两部分的容器。拆分窗格有两种类型:水平拆分和垂直拆分。水平拆分窗格用一条拆分线把窗格分成左右两部分,左面放一个组件,右面放一个组件,拆分线可以水平移动。垂直拆分窗格用一条拆分线把窗格分成上下两部分,上面放一个组件,下面放一个组件,拆分线可以垂直移动。,JSplitPane的两个常用的构
9、造方法:JSplitPane(int a,Component b,Component c)参数a取JSplitPane的静态常量 HORIZONTAL_SPLIT或VERTICAL_SPLIT,以决定是水平还是垂直拆分。后两个参数决定要放置的组件。当拆分线移动时,组件不是连续变化的。JSplitPane(int a,boolean b,Component c,Component d)参数a取JSplitPane的静态常量 HORIZONTAL_SPLIT或VERTICAL_SPLIT,以决定是水平还是垂直拆分。参数b决定当拆分线移动时,组件是否连续变化(true是连续),后两个参数决定要放置的
10、组件。,4JLayeredPane分层窗格如果添加到容器中的组件经常需要处理重叠问题,就可以考虑将组件添加到分层窗格。分层窗格分成5个层,分层窗格使用add(Jcomponent com,int layer);添加组件com,并指定com所在的层,其中参数layer取值JLayeredPane类中的类常量:DEFAULT_LAYER、PALETTE_LAYER、MODAL_LAYER、POPUP_LAYER、DRAG_LAYER,15.3.3 常用布局,容器可以使用方法:setLayout(布局对象);设置自己的布局。,1FlowLayout布局FlowLayout类创建的对象称做FlowLa
11、yout型布局。FlowLayout型布局是JPanel型容器的默认布局,即JPanel及其子类创建的容器对象,如果不专门为其指定布局,则它们的布局就是FlowLayout型布局。FlowLayout类的一个常用构造方法如下:FlowLayout();该构造方法可以创建一个居中对齐的布局对象,如果一个容器con使用这个布局对象:con.setLayout(flow);那么,con可以使用Container类提供的add方法将组件顺序地添加到容器中,组件按照加入的先后顺序从左向右排列,一行排满之后就转到下一行继续从左至右排列,每一行中的组件都居中排列,组件之间的默认水平和垂直间隙是5个像素。组件
12、的大小为默认的最佳大小,对于添加到使用FlowLayout布局的容器中的组件,组件调用setSize(int x,int y)设置的大小无效,如果需要改变最佳大小,组件需调用:public void setPreferredSize(DimensionpreferredSize)设置大小,FlowLayout布局对象调用setAlignment(int aligin)方法可以重新设置布局的对齐方式,其中aligin可以取值:FlowLayout.LEFT、FlowLayout.CENTER、FlowLayout.RIGHTFlowLayout布局对象调用setHgap(int hgap)方法和
13、setVgap(int vgap)可以重新设置水平间隙和垂直间隙,2BorderLayout布局BorderLayout 布局是Window型容器的默认布局,例如JFrame、JDialog都是Window类的子类,它们的默认布局都是BorderLayout布局。BorderLayout也是一种简单的布局策略,如果一个容器使用这种布局,那么容器空间简单地划分为东、西、南、北、中五个区域,中间的区域最大。每加入一个组件都应该指明把这个组件加在哪个区域中,区域由BorderLayout中的静态常量CENTER、NORTH、SOUTH、WEST、EAST表示,每个区域只能放置一个组件,如果向某个已放
14、置了组件的区域再放置一个组件,那么先前的组件将被后者替换掉。使用BorderLayout布局的容器最多能添加5个组件,如果容器中需要加入超过5个组件,就必须使用容器的嵌套或改用其它的布局策略。,3CardLayout 布局使用CardLayout 的容器可以容纳多个组件,这些组件被层叠放如容器中,最先加入容器的是第一张(在最上面),依次向下排序。使用该布局的特点是,同一时刻容器只能从这些组件中选出一个来显示,就像叠“扑克牌”,每次只能显示其中的一张,这个被显示的组件将占据所有的容器空间。,假设有一个容器con,那么,使用CardLayout的一般步骤如下:创建CardLayout对象作为布局,
15、使用容器的setLayout()方法为容器设置布局,容器调用add(String s,Component b)将组件b加入容器,并给出了显示该组件的代号s。组件的代号是一个字符串,和组件的名字没有必然联系,但是,不同的组件代号必须互不相同。最先加入con的是第一张,依次排序。创建的布局card用CardLayout类提供的show()方法,显示容器con中组件代号为s的组件:card.show(con,s);,3GridLayout布局GridLayout是使用较多的布局编辑器,其基本布局策略是把容器划分成若干行乘若干列的网格区域,组件就位于这些划分出来的小格中。GridLayout比较灵活,
16、划分多少网格由程序自由控制,而且组件定位也比较精确,使用GridLayout布局编辑器的一般步骤如下:使用GridLayout的构造方法GridLayout(int m,int n)创建布局对象,指定划分网格的行数m和列数n,使用GridLayout布局的容器调用方法add(Component c)将组件c加入容器,组件进入容器的顺序将按照第一行第一个、第一行第二个、第一行最后一个、第二行第一个、最后一行第一个、最后一行最后一个。,使用GridLayout布局的容器最多可添加mn个组件。GridLayout布局中每个网格都是相同大小并且强制组件与网格的大小相同。,5BoxLayout布局用Bo
17、xLayout类可以创建一个布局对象,称为盒式布局。BoxLayout在包中。javax.swing包提供了Box类,该类也是Container类的一个子类,创建的容器称作一个盒式容器,盒式容器的的默认布局是盒式布局,而且不允许更改盒式容器的布局。因此,在策划程序的布局时,可以利用容器的嵌套,将某个容器嵌入几个盒式容器,达到你的布局目的。,使用盒式布局的容器将组件排列在一行或一列,这取决于创建盒式布局对象时,是否指定了是行排列还是列排列。使用BoxLayou的构造方法BoxLayout(Container con,,int axis)可以创建一个盒式布局对象,行型盒式布局容器中添加的组件的上沿
18、在同一水平线上。列型盒式布局容器中添加的组件的左沿在同一垂直线上。容器的目的是向其添加组件,并根据需要设置合理的布局。如果需要一个盒式布局的容器,可以使用Box类的类(静态)方法 createHorizontalBox()获得一个具有行型盒式布局的盒式容器;使用Box类的类(静态)方法 createVerticalBox()获得一个具有列型盒式布局的盒式容器。如果想控制盒式布局容器中组件之间的距离,就需要使用水平支撑组件或垂直支撑组件。,Box类调用静态方法createHorizontalStrut(int width)可以得到一个不可见的水平Struct对象,称做水平支撑。该水平支撑的高度为
19、0,宽度是width。Box类调用静态方法createVertialStrut(int height)可以得到一个不可见的垂直Struct对象,称做垂直支撑。参数height决定垂直支撑的高度,垂直支撑的宽度为0。一个行型盒式布局的容器,可以在组件之间插入水平支撑来控制组件之间的距离。一个列型盒式布局的容器,可以在组件之间插入垂直支撑来控制组件之间的距离,6null布局可以把一个容器的布局设置为null布局(空布局)。空布局容器可以准确地定位组件在容器的位置和大小。setBounds(int a,int b,int width,int height)方法是所有组件都拥有的一个方法,组件调用该方
20、法可以设置本身的大小和在容器中的位置。,15.4 处理事件,15.4.1 事件处理模式 1事件源能够产生事件的对象都可以成为事件源,如文本框、按钮、下拉式列表等。也就是说,事件源必须是一个对象,而且这个对象必须是Java认为能够发生事件的对象。,2监视器。我们需要一个对象对事件源进行监视,以便对发生的事件作出处理。事件源通过调用相应的方法将某个对象注册为自己的监视器 事件源注册监视器之后,相应的操作就会导致相应的事件的发生,并通知监视器,监视器就会作出相应的处理。,3处理事件的接口。监视器负责处理事件源发生的事件。监视器是一个对象,为了处理事件源发生的事件,监视器这个对象会自动调用一个方法来处
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 图形用户界面设计 图形 用户界面 设计
链接地址:https://www.31ppt.com/p-6509132.html