基于swing的图形用户界面设计方案

上传人:tia****nde 文档编号:67700977 上传时间:2019-01-08 格式:PPT 页数:93 大小:1.96MB
返回 下载 相关 举报
基于swing的图形用户界面设计方案_第1页
第1页 / 共93页
基于swing的图形用户界面设计方案_第2页
第2页 / 共93页
基于swing的图形用户界面设计方案_第3页
第3页 / 共93页
基于swing的图形用户界面设计方案_第4页
第4页 / 共93页
基于swing的图形用户界面设计方案_第5页
第5页 / 共93页
点击查看更多>>
资源描述

《基于swing的图形用户界面设计方案》由会员分享,可在线阅读,更多相关《基于swing的图形用户界面设计方案(93页珍藏版)》请在金锄头文库上搜索。

1、2019/1/8,1,第10章 基于Swing的图形用户界面设计,本章导读 AWT组件与SWING组件 JFrame窗体、菜单组件、布局设计 中间容器、文本组件 按钮与标签组件、复选框与单选按钮组件 列表组件、表格组件、树组件和进度条组件 窗口事件、鼠标事件、焦点事件和键盘事件 对话框 AWT线程与计时器 MVC设计模式 发布应用程序,2019/1/8,2,10.1 AWT组件与SWING组件概述,Java早期进行用户界面设计时,使用java.awt包中提供的类。 “AWT”就是Abstrac Window Toolkit(抽象窗口工具包)的缩写。 Java 2(JDK1.2)推出之后,增加了

2、一个新的javax.swing包,该包提供了功能更为强大的用来设计GUI界面的类。 Java早期的java.awt包中的类创建的组件习惯上称为重组件。例如,当用java.awt包中的Button类创建一个按钮组件时,都有一个相应的本地组件在为它工作(称为它的同位体)。 javax.swing包为我们提供了更加丰富的、功能强大的组件,称为SWING组件,其中大部分组件是轻组件,没有同位体。 SWING组件的轻组件在设计上和AWT完全不同,轻组件把与显示组件有关的许多工作和处理组件事件的工作交给相应的UI代表来完成。这些UI代表是用Java语言编写的类,这些类被增加到Java的运行环境中,因此组件

3、的外观不依赖平台,不仅在不同平台上的外观是相同的,而且较组件有更高的性能。如果Java运行环境低于1.2版本,就不能运行含有SWING组件的程序。,2019/1/8,3,图10.1 JComponent类的部分子类以及JFrame类和JDialog类,2019/1/8,4,容器类(Container)和组件类(Component),Java把由Component类的子类或间接子类创建的对象称为一个组件;把由Container的子类或间接子类创建的对象称为一个容器。 可以向容器添加组件。Container类提供了一个public方法add(),一个容器可以调用这个方法将组件添加到该容器中。 调用

4、removeAll()方法可以移掉容器中的全部组件,调用remove(Component c)方法可以移掉容器中参数指定的组件。 每当容器添加新的组件或移掉组件时,应该让容器调用validate()方法,以保证容器中的组件能正确显示出来。 容器本身也是一个组件,因此可以把一个容器添加到另一个容器中实现容器的嵌套。 javax.swing包中有4个最重要的类JApplet,JFrame,JDialog和JComponent。 注:JComponent类的子类都是轻组件,JComponent类是java.awt包中Container类的子类,因此所有的轻组件也都是容器。 而JFrame、JAppl

5、et、JDialog都是重组件,即有同位体的组件,这样窗口(JFrame)、对话框(JDialog)、小应用程序(Java Applet)可以和操作系统交互信息。轻组件必须在这些容器中绘制自己,习惯上称这些容器为SWING的底层容器。,2019/1/8,5,10.2 JFrame窗体,javax.swing包中的JFrame类是java.awt包中Frame类的子类,因此JFrame类其子类创建的对象是窗体。 当应用程序需要一个窗口时,可使用JFrame或其子类创建一个对象。窗口默认地被系统添加到显示器屏幕上,因此不允许将一个窗口添加到另一个容器中。Frame类常用方法如下: JFrame()

6、 创建一个无标题的窗口。 JFrame(String s) 创建一个标题为s的窗口。 public void setBounds(int a,int b,int width,int height)设置出现在屏幕上时的初始位置为(a,b),即距屏幕左面a个像素、距屏幕上方b个像素;窗口的宽是width,高是height。 public void setSize(int width,int height) 设置窗口的大小,在屏幕出现默认位置是(0,0)。 public void setVisible(boolean b) 设置窗口是可见还是不可见,窗口默认是不可见的。 public void se

7、tResizable(boolean b) 设置窗口是否可调整大小,窗口默认是可调整大小的。 public void setDefaultCloseOperation(int operation) 该方法用来设置单击窗体右上角的关闭图标后,程序会做出怎样的处理。其中的参数operation取下列有效值: 1) DO_NOTHING_ON_CLOSE 什么也不做 2)HIDE_ON_CLOSE 隐藏当前窗口 3)DISPOSE_ON_CLOSE 隐藏当前窗口,并释放窗体占有的其他资源 4)EXIT_ON_CLOSE 结束窗体所在的应用程序 这4个常量都是JFrame类中的static常量,单击关

8、闭图标后,程序根据operation取值做出不同的处理。 例子10-1用JFrame创建了两个窗口,程序运行效果如图10.2。,2019/1/8,6,例子10-1 运行效果图10.2,2019/1/8,7,10.3 菜单组件,窗口中的菜单条、菜单、菜单项是我们所熟悉的界面,菜单条、菜单、菜单项是窗口常用的组件,菜单放在菜单条里,菜单项放在菜单里。 1JMenuBar菜单条 JComponent类的子类JMenuBar是负责创建菜单条的,即JMenuBar的一个实例就是一个菜单条。 JFrame类有一个将菜单条放置到窗口中的方法: public void setJMenuBar(JMenuBar

9、 menubar); 该方法将菜单条添加到窗口的菜单条区域(注意:只能向窗口添加一个菜单条)。,2019/1/8,8,2. JMenu菜单,JComponent类的子类JMenu类是负责创建菜单的,即JMenu的一个实例就是一个菜单。JMenu类的主要方法有以下几种: JMenu(String s) 建立一个指定标题菜单,标题由参数s确定 public void add(MenuItem item) 向菜单增加由参数item指定的菜单选项对象。 public void add(String s) 向菜单增加指定的选项。 public JMenuItem getItem(int n) 得到指定索

10、引处的菜单选项。 public int getItemCount() 得到菜单选项数目。,2019/1/8,9,3. JMenuItem菜单项,JMenuItem是JMenu的父类,该类是负责创建菜单项的,即JMenuItem的一个实例就是一个菜单项。菜单项放在菜单里。JMenuItem类的主要方法有以下几种: JMenuItem(String s) 构造有标题的菜单项。 JMenuItem(String text, Icon icon) 构造有标题和图标的菜单项 public void setEnabled(boolean b)设置当前菜单项是否可被选择。 public String get

11、Label() 得到菜单项的名字。 public void setAccelerator(KeyStroke keyStroke) 为菜单项设置快捷键。 为了向该方法的参数传递一个KeyStroke对象,可以使用KeyStroke类的类方法public static KeyStroke getKeyStroke(char keyChar)返回一个KeyStroke对象;也可以使用KeyStroke类的类方法public static KeyStroke getKeyStroke(int keyCode,int modifiers)返回一个KeyStroke对象,其中参数keyCode取值范围为

12、KeyEvent.VK_A KeyEvent.VK_Z,modifiers的取值如下:InputEvent.ALT_MASK,InputEvent.CTRL_MASK和InputEvent.SHIFT_MASK。,2019/1/8,10,4. 嵌入子菜单,JMenu是JMenuItem的子类,因此菜单项本身还可以是一个菜单,这样的菜单项称为子菜单。 为了使得菜单项有一个图标,可以用图标类Icon声明一个图标,然后使用其子类ImageIcon类创建一个图标,如 Icon icon=new ImageIcon(“dog.gif “); 下面的例10-2中有一个含有菜单的窗口(效果如图10.3所示)

13、。,2019/1/8,11,10.4 布局设计,当把组件添加到容器中时,希望控制组件在容器中的位置,这就需要学习布局设计的知识。 本节将介绍java.awt包中的FlowLayout、BorderLayout、CardLayout、GridLayout布局类和java.swing.border包中的BoxLayout布局类。 容器可以使用方法 setLayout(布局对象); 来设置自己的布局。 对于JFrame窗口,默认布局是BorderLayout布局。,2019/1/8,12,1FlowLayout布局,FlowLayout类的对象称为FlowLayout布局。FlowLayout类的一

14、个常用构造方法如下: FlowLayout();构造方法可以创建一个居中对齐的布局对象,如: FlowLayout flow=new FlowLayout(); con.setLayout(flow); 容器con使用flow这个布局对象 容器con可以使用Container类提供的add()方法将组件顺序地添加到容器中。 FlowLayout布局对象调用setAlignment(int aligin)方法可以重新设置布局的对齐方式,其中aligin可以取值FlowLayout.LEFT、FlowLayout.CENTER或FlowLayout.RIGHT。 FlowLayout布局对象调用s

15、etHgap(int hgap)方法和setVgap(int vgap)方法可以重新设置布局的水平间隙和垂直间隙。 如果需要改变最佳大小,组件需调用: public void setPreferredSize(Dimension preferredSize) 设置大小,例如:button.setPreferredSize(new Dimension(20,20); 注:对于添加到使用FlowLayout布局的容器中的组件,组件调用setSize(int x,int y)设置的大小无效。 例10-3中,JFrame使用FlowLayout布局放置10个组件(效果如图10.4所示)。,2019/1

16、/8,13,例子10-3 运行效果图10.4,2019/1/8,14,2BorderLayout布局,BorderLayout布局是Window容器的默认布局。 JFrame、JDialog都是Window类的间接子类,它们的内容面板的默认布局都是BorderLayout布局。 如果一个容器使用这种布局,那么容器空间简单地划分为东、西、南、北、中五个区域。每加入一个组件都应该指明把这个组件添加在哪个区域中,区域由BorderLayout中的静态常量CENTER、NORTH、SOUTH、WEST、EAST表示。例如, 一个使用BorderLayout布局的容器con,可以使用add()方法将一个组件b添加到中心区域: con.add(b,BorderLayout.CENTER);或 con.add(BorderLayour.CENTER,b); 注: 添加到某个区域的组件将占据整个这个区域.每个区域只能放置一个组件,如果向某个已放置了组件的区域再放置一个组件,那么先前的组件将

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号