SWTGUI设计的入门了解.ppt
《SWTGUI设计的入门了解.ppt》由会员分享,可在线阅读,更多相关《SWTGUI设计的入门了解.ppt(177页珍藏版)》请在三一办公上搜索。
1、主要内容,基于Java程序的GUI设计工具,主要包括下述几个概念:组件-Component(API)容器-Container布局管理器-LayoutManager事件处理,主要内容,容器及布局管理:解决组件在容器中的位置和大小;常用组件介绍:按钮、文本框、标签、列表框、菜单等;事件管理:如何监听和响应事件;,主要内容,在Java中,开发一个GUI程序,通常需要以下几步:(1)构建一个顶层容器,通常是JFrame或JApplet;(2)构建若干个组件,组件可以是其它容器;(3)设定容器的布局管理器,用容器的add()方法将这些组件加入到这个容器中;(4)设置组件事件,并将组件事件与代码关联。,重
2、点掌握的内容,从介绍容器及布局管理入手,主要掌握组件如何布置问题,重点掌握取消布局管理的方法事件管理,是本章的核心,对事件管理的四个要素,各起什么作用?怎样应用熟练掌握?对事件处理的三个方式要清楚,至少掌握一种方法对各组件的具体使用,重点是按钮、文本框、标签,其它了解对菜单、鼠标、键盘的事件管理做了解,7.1 图形用户界面概述,图形用户界面GUI(Graphics User Interface)1、目的 在Applet或Application程序中提供人机交互界面,是不可缺少的部分。2、有关的java包及类 java.awt包,抽象窗口工具包AWT,是JDK1.0 版本,主要包括如下:绘制图形
3、、控制字体和颜色;容器及布局管理;各种常用组件,如按钮、文本框、列表框等;菜单,对话框;事件管理;javax.swing包,是对AWT的升级和扩充,比AWT 组件更丰富、功能更强,由JDK1.2以上版本提供,兼容AWT,各组件名前加J字头,如JButton。,为了开发GUI程序,在Java 1.2版之前,Java提供了一个AWT类库,称为抽象窗口工具箱(简称AWT)。由于AWT存在严重缺陷,Sun从Java 1.2 版开始提供了一个新的组件库Swing。Swing可以说是第二代GUI开发工具集,它是通过javax.swing包提供的,javax.swing包也是Java基础类库的组成部分。,7
4、.1 图形用户界面概述,由于Swing组件比AWT组件有许多优点,所以新开发的程序应该使用Swing组件而不应该再使用AWT组件。Swing组件并没有完全取代AWT,它只是替代了AWT包中的图形用户界面组件(如Button、TextField、TextArea等),AWT中的一些辅助类(如Graphics、Color、Font、LayoutManager等)仍然保持不变。另外,Swing仍然使用AWT的事件模型。,7.1 图形用户界面概述,Swing组件简介,1.组件及层次 在Java语言中,与图形用户界面相关的包有多个,其中比较重要的有java.awt包、java.awt.event包、ja
5、vax.swing包。图7.1给出了有关包中常用的类及类的层次结构。,1.组件及层次,图7.1中Applet类在java.applet包中,以J开头的类在javax.swing包中,其他类在java.awt包中。,图7.1 Java GUI所用类的层次结构图,表7-1 构建图形用户界面常用的类,Java把Component类的子类或间接子类创建的对象称为一个组件。把Container的子类或间接子类创建的对象称为一个容器。AWT中的大部分类都是容器类(Container)和组件类(Component)的子类或间接子类。,1.组件及层次,Java.awt包中一部分类的层次关系如图所示,1.组件及
6、层次,2.组件分类,容器组件:容器组件又可以分为三类:顶层容器:包括JFrame、JApplet、JDialog;通用容器:包括JPanel、JScrollPane、JSplitPane、JTabbedPane、JToolBar;专用容器:包括JInternalFrame、JLayeredPane、JRootPane等。基本组件:基本组件包括JButton、JTextField、JComboBox、JList、JMenu、JSlider等。这些组件有的主要用于信息的显示,如JLabel、JProgressBar、JToolTip等,有的可以在其中编辑信息,如JTextArea、JtextFie
7、ld、JFileChooser、JColorChooser、JTable、JTree等。菜单组件:菜单组件包括JMenuBar、JMenu、JMenuItem、JRadioButtonMenuItem、JCheckBoxMenuItem和JPopupMenu等。这些组件主要用于构建各种菜单。,2.组件分类,JApplet:java.lang.Applet的扩展版本。JButton:按钮或命令按钮。JCheckBox:复选框。JCheckBoxMenuItem:复选菜单项。JComboBox:组合框。JComponent:Swing组件的基类。JDialog:对话框窗口的基类。JLabel:标签
8、项。JList:列表框。JMenu:菜单。JMenuBar:菜单条。JMenuItem:菜单项。JPanel:通用的轻量容器。JPasswordField:文本框(用来输入口令),JComponent类常用方法,JComponent抽象类是所有Swing组件的超类,其中定义了每个组件都可以使用的方法,常用的方法有:public void setSize(int width,int height)设置组件或容器的大小。public void setVisible(boolean b)设置组件或容器是否可见。public void setBackground(Color c)设置组件的背景颜色,C
9、olor为颜色类。public Color getBackground()返回组件的背景颜色,Color为颜色类。,JComponent类及其方法,public void setForeground(Color c)设置组件的前景颜色。public Color getForeground()返回组件的前景颜色。public void setFont(Font f)设置组件上使用的字体,Font为字体类。public Font getFont()返回组件上使用的字体。public Graphics getGraphics()返回组件的图形上下文(graphics context)或绘图对象,Gr
10、aphics为图形上下文类,使用该类对象可以在组件上绘制图形。public void setToolTipText(String text)设置组件上的提示信息。public String getToolTipText()返回组件上的提示信息。,Container类及其方法,容器(Container)也是一个类,实际上是Component的子类,因此容器本身也是一个组件,具有组件的所有性质,但是它的主要功能是容纳其他组件和容器。,添加到容器中的组件位置和大小由容器的布局管理器决定(Layout Manager)。setLayout()方法设置容器布局。容器中可以容纳其他组件,通过调用容器的ad
11、d()方法把其他组件添加到容器中。,Container类及其方法,Container类中的常用方法:public Component add(Component comp)public Component add(Component comp,int index)向容器中添加组件,index参数指定组件添加到容器中的位置,无index参数则添加到默认位置。public void remove(Component comp)从容器中清除指定的组件。,Container类及其方法,public void setLayout(LayoutManager mgr)设置容器的布局。参数mgr是布局管理器
12、对象,它决定组件在容器中如何摆放。public void paint(Graphics g)在容器上绘制图形。public void paintComponents(Graphics g)在容器上绘制图形。public void update(Graphics g)更新容器上绘制的图形。,7.2 容器(Container),容器的作用:容纳其它组件;容器类:Container类,继承于Component类;基本容器:共有三种;1、JApplet:Java小程序容器,可作为顶层容器,除菜单以外,可加入任何其它组件。2、JFrame:框架容器,生成弹出式窗口,可加入菜单和任何组件,是独立于JApp
13、let的顶层容器,可在Applet和Application中使用。3、JDialog:对话框容器,也是一种弹出式窗口,作为顶层容器,可加入其它组件,但不能加入菜单,用于弹出一些信息。java提供一些标准的对话框,如FileDialog可推出Window风格的文件对话框,对文件进行打开、保存等。一般容器:有JPanel,JScrollPanel,JTabbedPanel,JToolBar等。,简单的框架窗口,1.创建简单的框架窗口每个使用Swing GUI的程序必须至少有一个顶层Swing容器。对于GUI应用程序来说,一般应该有一个主窗口,也称为框架窗口。在Swing中,框架窗口是由JFrame
14、对象实现的。2.JFrame类常用的构造方法有:public JFrame()创建一个没有标题的窗口对象。public JFrame(String title)创建一个以title为标题的窗口对象。,3.常用方法(1)创建窗口 直接创建一个JFrame的实例或通过继承JFrame类来定义子类,再创建对象。例:JFrame frame=new JFrame(窗体);(2)设置标题 通过super(String title)调用基类的构造方法,或通过setTitle(String title)方法设置标题。JFrame frame=new JFrame(窗体);或JFrame frame=new
15、JFrame();frame.setTitle(“窗体”);(3)设置初始位置void setLocation(int x,int y)设置初始位置,其中x,y是窗口左上角在屏幕上的坐标值。(4)设置大小void setSize(int w,int h)设置Frame尺寸。,简单的框架窗口,(5)设置窗体是否可见void setVisible(boolean b)设置窗体是否可见。(6)窗体自适应组件void pack()调整Frame大小自动适应显示所有组件。(7)定义关闭行为setDefaultCloseOperation(int operation)方法设置关闭行为。其中operatio
16、n取值如下:EXIT_ON_CLOSE:当关闭窗口时退出程序。DO_NOTHING_ON_CLOSE:当关闭窗口时不做任何处理。HIDE_ON_CLOSE:当关闭窗口时隐藏这个窗口。(默认)DISPOSE_ON_CLOSE:当关闭窗口时隐藏并处理这个窗口。,简单的框架窗口,程序7.1 HelloSwing.java,import javax.swing.*;public class HelloSwing public static void main(String args)JFrame frame=new JFrame(Hello Swing);frame.setSize(400,240);
17、frame.setVisible(true);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);,程序7.1 HelloSwing.java,图7-3 最简单的框架窗口,继承JFrame类,程序7.1的方法在创建比较简单的窗口时还可以,如果窗口比较复杂,就会使得main()方法的内容过多。一般应该创建一个继承JFrame类的子类,然后编写程序创建该类对象。,程序7.2 HelloSwing.java,import javax.swing.*;public class HelloSwing extends JFrame public Hel
18、loSwing1()this(HelloSwing);public HelloSwing(String title)super(title);setSize(400,250);setLocation(350,250);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);public static void main(String args)HelloSwing frame=new HelloSwing();,在框架中添加组件,若向顶层容器(JFrame、JApplet、JDialog)中添加组件,可以使用容器的add(
19、)方法实现。必须清楚容器使用的布局管理器,否则可能会得不到需要的结果。,程序7.3 SimpleFrame.java,import java.awt.*;import javax.swing.*;public class SimpleFrame extends JFrame JButton jButton1,jButton2;public SimpleFrame(String title)super(title);jButton1=new JButton(OK);jButton2=new JButton(Cancel);setLayout(new FlowLayout();add(jButto
20、n1);add(jButton2);setSize(400,300);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);public static void main(String args)SimpleFrame frame=new SimpleFrame(Frame With Button);,在框架中添加组件,实际上JFrame对象是由多个窗格组成的,如图7.6所示。,在框架中添加组件,JFrame对象的中间层是内容窗格(Content Pane),它是一个容器对象。用容器的add()方法添加的组件实际是添加到
21、该内容窗格中的。每个容器都有一个布局管理器,它管理着组件在其中的大小、位置等。内容窗格默认的布局管理器是BorderLayout,即边界式布局。可以使用容器的setLayout()方法改变容器的布局管理器。,7.3 容器布局,1 BorderLayout布局管理器2 FlowLayout布局管理器3 GridLayout布局管理器4 其他布局管理器5 面板容器及容器的嵌套6 应用程序外观,Java语言的一个特点是强调程序的平台无关性。对于图形用户界面同样是这样。在Java的图形界面程序中,它是通过为每种容器提供了布局管理器来实现组件布局的。所谓布局管理器就是为容器设置一个LayoutManag
22、er对象(即布局管理器对象),来管理组件在容器中摆放的顺序、位置、大小以及当窗口大小改变后组件如何变化等特征。,7.3 容器布局,通过使用布局管理器机制就可以实现GUI的跨平台性,同时避免为每个组件设置绝对位置。常用的布局管理器有:FlowLayoutBorderLayoutGridLayoutCardLayout和GridBagLayout这些类都是在java.awt包中定义的。,7.3 容器布局,每种容器都有默认的布局管理器,也可以为容器指定新的布局管理器。如果要将某个容器的布局管理器设置为新的布局,需要使用构造方法创建一个布局管理器对象,然后使用容器的setLayout()方法将容器设置
23、为这种布局管理器。,7.3 容器布局,BorderLayout:边界式布局。是Swing包中容器JFrame、JApplet、JDialog的默认布局管理器。布局特点:将容器分为东西南北中五个区域,通常每个区域放一个组件,位置及大小无法控制;构造方法:有两个 public BorderLayout()public BorderLayout(int h_Gap,int v_Gap),1.BorderLayout布局管理器,BorderLayout的构造方法,public BorderLayout(int hgap,int vgap)该构造方法创建一个布局管理器对象,hgap和vgap分别指定使用
24、这种布局时组件之间的水平间隔和垂直间隔距离,单位为像素。public BorderLayout()该构造方法创建一个BorderLayout布局管理器对象,使用这种布局时组件之间没有间隔。,BorderLayout布局管理器,BorderLayout布局也叫边界式布局,它将容器分成东、南、西、北、中五个区域,每个区域可放置一个组件或其他容器。北占据容器的上方,东占据容器的右侧,等等。中间区域是在东、南、西、北都填满后剩下的区域。若要改变容器的布局管理器须调用容器的setLayout()方法,它的格式为:public void setLayout(LayoutManager layout),Bo
25、rderLayout布局管理器,使用BorderLayout 布局管理器,当窗口的大小改变时,容器中的组件大小相应改变。当窗口垂直延伸时,东、西、中区域也延伸;而当窗口水平延伸时,南、北、中区域也延伸。当某个区域没有添加组件时,中央组件会占据无组件的空间,但若没有中央组件,四周组件都有,中央区域空出,请读者自己修改程序,去掉某个区域的组件,观察程序运行效果。,BorderLayout布局管理器,向BorderLayout布局的容器中添加组件应该使用add(Component c,int index)方法,c为添加的组件,index为指定的位置。指定位置需要使用BorderLayout类定义的五
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SWTGUI 设计 入门 了解

链接地址:https://www.31ppt.com/p-2936286.html