第12章基于Swing的GUI开发

上传人:飞*** 文档编号:6283520 上传时间:2017-08-08 格式:PPT 页数:70 大小:268.50KB
返回 下载 相关 举报
第12章基于Swing的GUI开发_第1页
第1页 / 共70页
第12章基于Swing的GUI开发_第2页
第2页 / 共70页
第12章基于Swing的GUI开发_第3页
第3页 / 共70页
第12章基于Swing的GUI开发_第4页
第4页 / 共70页
第12章基于Swing的GUI开发_第5页
第5页 / 共70页
点击查看更多>>
资源描述

《第12章基于Swing的GUI开发》由会员分享,可在线阅读,更多相关《第12章基于Swing的GUI开发(70页珍藏版)》请在金锄头文库上搜索。

1、第12章 基于Swing的GUI开发,Swing概述基于Swing的应用程序Swing组件中基于Swing的用户界面,12.1 Swing概述,Swing是由纯Java实现的,Swing组件是用Java实现的轻量级( light-weight)组件,没有本地代码,不依赖操作系统的支持,这是它与AWT组件的最大区别。由于AWT组件通过与具体平台相关的对等类(Peer)实现,因此Swing比AWT组件具有更强的实用性。Swing在不同的平台上表现一致,并且有能力提供本地窗口系统不支持的其它特性。,Swing的特性,组件的多样化 Swing是AWT的扩展,它提供了许多新的图形界面组件。Swing组件

2、以“J”开头,除了有与AWT类似的按钮(JButton)、标签(JLabel)、复选框(JCheckBox)、菜单(JMenu)等基本组件外,还增加了一个丰富的高层组件集合,如表格(JTable)、树(JTree)。 采用分离模型结构(Separable Model Architecture) Swing中采用分离模型:将组件分为组件显示和数据模 型(View和Model)。,MVC是现有的编程语言中制作图形用户界面的一种通用的思想,其思路是把数据的内容本身和显示方式分离开,这样就使得数据的显示更加灵活多样。比如,某年级各个班级的学生人数是数据,则显示方式是多种多样的,可以采用柱状图显示,也可

3、以采用饼图显示,也可以采用直接的数据输出。因此在设计的时候,就考虑把数据和显示方式分开,对于实现多种多样的显示是非常有帮助的。MVC模型的三要素:Model 是程序所操纵数据的逻辑结构。View 是数据的可视化表示Controller 是控制和执行对用户操作的响应。,MVC三个要素相互独立又相互关联。Swing中由View(包含了View和Conftoller)和Model组成,两者之间密不可分。可设置的组件外观感觉(Look and Feel L&F) Swing的外观采用可设置的外观感觉。支持高级访问方式 所有组件均实现了Accessible接口支持键盘代替鼠标的操作设置边框使用图标 许多

4、Swing组件除了用文字还可以用图标对组件进行 修饰。,Swing组件类层次,Swing组件是Jcomponent 类的子类, Jcomponent类是从AWT的容器类派生的子类。Swing组件类的层次图java.lang.Object|+-java.awt.Component|+-java.awt.Container|+- javax.swing.JcomponentSwing包是JFC(Java Foundation Classes)的一部分,由许多包组成。,swing包是Swing提供的最大包,它包含将近100个类和25个接口,几乎所有的Swing组件都在swing包中,只有Jtable

5、Header 和JtextComponent 是例外,它们分别在swing.table和swing.text中。swing.border包中定义了事件和事件监听器类,与AWT的event包类似。它们都包括事件类和监听器接口。swing.pending包包含了没有完全实现的Swing组件swing.table包中主要包括了表格组建(Jtable)的支持类。swing.tree同样是JTree的支持类。swing.text swing.text.htmlswing.text.html.parser和swing.text.rtf都是用于显示和编辑文档的包。,12.2 基于Swing的应用程序,例题:

6、12-1 Jframe 的一个简单例子Swing的程序设计一般可按照下列流程进行:引入Swing包 import javax.swing.* ; import java.awt.* import java.awt.event.*选择“外观和感觉”设置顶层容器设置按钮和标签向容器中添加组件在组件周围添加边界进行事件处理,例题12-2显示一个按钮并显示按钮的单击次数。二、设置L&F Swing目前支持跨平台的Java L&F也称为Metal L&F当前运行平台的L&F有Windows和Motif L&F。从Jdk1.4.2开始支持GTK+L&F等。设置L&F并不是必然的,如果不设置L&F,则Swi

7、ng的UI管理器对象将使用Java L&F。 设置L&F的方式 在程序中进行;通过命令行方式;通过设置系统属性;1。L&F的设置,在程序中使用 UIManager.setLookAndFeel()方法进行L&F的设置。 L&F的设置应该是Main()方法的第一个操作,否则设置可能不起作用。 setLookAndFeel()方法的参数是 javax.swing.LookAndFeel 类相应子类的长名。 例如:UIManager.setLookAndFeel(UIManager.getcroosplatformlookandfeelclassname(); 跨平台的Java L&FUIManag

8、er.setLookAndFeel(UIManager.getSystemLookandFeelclassname(); 当前平台的L&FUIManager.setLookAndFeel(“com.sun.java.swing.plaf.gtk.gtklookandfeel”); GTK+L&F 等 参见教材P369,2.L&F 的更改 当GUI显示后使用setLookAndFeel()方法改变。为了使已存在的组件改变显示风格,需要对每个顶层容器调用方法:SwingUtilities.updatecomponentTreeUI()例如: UIManager.setLookAndFeel(inf

9、Name);SwingUtilities.updateComponentTreeUI(frame)Frame.pack();,3. 设置顶层容器,Swing GUI的层次项包容关系:顶层容器中间层容器基本组件顶层容器:提供了所包含组件需要的 绘制与事件处理功能,常用的顶层容 器是Jframe;Jdialog;Japplet中间容器:由通用容器构成,主要为 了简化组件的布局,常用的有Jpannel Jscrollpane Jtabbedpan等。基本组件:是直接向用户展示信息或获取用户输入的组件。,Jframe,Content pane,jpanel,Jbutton,Jcabel,Swing中不

10、能直接将组件添加到顶层容器中,必须有一个与顶层容器相关联的内容面板(content pane) 上。 通常为便于组件位置的规划,可用一个中间容器如(Jpanel)存放所有组件,然后将中间容器添加到顶层容器的内容面板中,或将该中间容器设置为内容面板。 对Jframe添加组件为例,有两种方式:用getContentpane()方法获得Jframe的内容面板,再用add方法向其中加入组件 frame.getContentpane().add(new Jlabel(“hello!”);,建立一个中间容器,把组件加到中间容器中再用 SetContentPane()方法把该容器设置为Jframe 的内容面

11、板 Jpanel contentpane=new Jpanel(); Jbutton b=new Jbutton(“确定”) contentPane.add(b); frame.setContentPane(contentpane),4.布局管理器,在SwingGUI中,只有使用Jpanel或向顶层容器的内容面板添加组件时使用布局管理器。而象Swing的容器Jscrollpane使用特定的布局,无须设置布局。 Swing中提供的布局管理器可以用AWT中的FlowLayout GridLayout BordLayout CardLayout GridBagLayout外还增加了BoxLayout

12、 SpringLayout BoxLayout箱式布局管理器,是将组件垂直摆放在一列或水平一行中,由参数 BoxLayout.x_Axis和BoxLayout.y_Axis指定。 例 题12-3 BoxLayout示例,5. 事件处理,Swing中仍然延用AWT中基于监听器的事件处理机制。,12.3 Swing组件,在Swing中不但用轻量级的组件替代了AWT中的重量级的组件,而且Swing的替代组件中都包含有一些其他的特性。例如,Swing的按钮和标签可显示图标和文本,而AWT的按钮和标签只能显示文本。Swing中的大多数组件都是AWT组件名前面加了一个J。,1.Swing组件分类,组件从功

13、能上分可分为:1) 顶层容器:JFrame,JApplet,JDialog,JWindow共4个2) 中间容器:JPanel,JScrollPane,JSplitPane,JToolBar3) 特殊容器:在GUI上起特殊作用的中间层,如: JInternalFrame,JLayeredPane,JRootPane.4) 基本控件:实现人际交互的组件,如Jbutton, JComboBox, JList, JMenu, JSlider, JtextField。5) 不可编辑信息的显示:向用户显示不可编辑信息的组件, 例如JLabel, JProgressBar, ToolTip。6) 可编辑信息

14、的显示:向用户显示能被编辑的格式化信息的 组件,如JColorChooser, JFileChoose, JFileChooser, Jtable, JtextArea。,2. Jcomponent 类,Jcomponent 是一个抽象类,用于定义所有子类组件的一般方法,其类层次结构如下所示:java.lang.Object|+-java.awt.Component|+- java.awt.Container|+- javax.swing.JComponent并不是所有的Swing组件都继承于JComponent类Jcomponent类继承于Container类,所以凡是此类的组件都可作为容器使用。,JComponent类的特殊功能,1)边框设置:使用setBorder()方法可以设置组件外围的边框,使用一个EmptyBorder对象能在组件周留出空白。2) 双缓冲区:使用双缓冲技术能改进频繁变化的组件的显示效果。与AWT组件不同,JComponent组件默认双缓冲区,不必自己重写代码。如果想关闭双缓冲区,可以在组件上施加setDoubleBuffered(false)方法。3) 提示信息:使用setTooltipText()方法,为组件设置对用户有帮助的提示信息。,

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

当前位置:首页 > 中学教育 > 其它中学文档

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