Chapter14(My--Java教案).doc_第1页
Chapter14(My--Java教案).doc_第2页
Chapter14(My--Java教案).doc_第3页
Chapter14(My--Java教案).doc_第4页
Chapter14(My--Java教案).doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一节 介 绍 Java基础类是关于GUI组件和服务的完整集合,它大大简化了健壮Java应用程序的开发和实现。JFC主要包含5个API:AWT,Java2D,Accessibility,Drag & Drop,Swing。它提供了帮助开发人员设计复杂应用程序的一整套应用程序开发包。A、Java2D是一图形API,它为Java应用程序提供了一套高级的有关二维(2D)图形图像处理的类。Java2D API扩展了java.awt和java.awt. image类,并提供了丰富的绘图风格,定义复杂图形的机制和精心调节绘制过程的方法和类。B、Accessibility API提供了一套高级工具,用以辅助开发使用非传统输入和输出的应用程序。它提供了一个辅助的技术接口,如:屏幕阅读器,屏幕放大器,听觉文本阅读器(语音处理)等等。C、Drag & Drop技术提供了Java和本地应用程序之间的互操作性,用来在Java应用程序和不支持Java技术的应用程序之间交换数据。D、JFC模块的重点在Swing。Swing用来进行基于窗口的应用程序开发,它提供了一套丰富的组件和工作框架,以指定GUI如何独立于平台地展现其视觉效果。Swing介绍 Swing提供了一整套GUI组件,为了保证可移植性,它是完全用Java语言编写的。1)可插的外观和感觉 可插的外观和感觉使得开发人员可以构建这样的应用程序:它们可以在任何平台上执行,而且看上去就象是专门为那个特定的平台而开发的。一个在Windows环境中执行的程序,似乎是专为这个环境而开发的;而同样的程序在Unix平台上执行,它的行为又似乎是专为Unix环境开发的。 开发人员可以创建自己的客户化Swing组件,带有他们想设计出的任何外观和感觉。这增加了用于跨平台应用程序和Applet的可靠性和一致性。一个完整应用程序的GUI可以在运行时刻从一种外观和感觉切换到另一种。 2)Swing的体系结构 与AWT比较,Swing提供了更完整的组件,引入了许多新的特性和能力。Swing API是围绕着实现AWT各个部分的API构筑的。这保证了所有早期的AWT组件仍然可以使用。AWT采用了与特定平台相关的实现,而绝大多数Swing组件却不是这样做的,因此Swing的外观和感觉是可客户化和可插的。 上图显示了JFC各个部分之间的相互关系。Java2D,Accessibility,Drag & Drop,和Accessibility API是AWT和JFC的一部分,但它们不属于Swing。这是因为,这些组件使用了一些本地代码,而Swing却不是这样的。 Swing是围绕着一个称为JComponent的新组件构建的,而JComponent则由AWT的容器类扩展而来。3)Swing的层次结构下图说明了Swing组件的层次结构: Swing GUI使用两种类型的类,即GUI类和非GUI支持类。GUI类是可视的,它从JComponent继承而来,因此称为“J”类。非GUI类为GUI类提供服务,并执行关键功能;因此它们不产生任何可视的输出。4)Swing组件 Swing组件主要为文本处理、按钮、标签、列表、pane、组合框、滚动条、滚动pane、菜单、表格和树提供了组件。其中一些组件如下所示: JApplet JButton JComboBox JOptionPane JList JLabel JScrollPaneJTable JScrollBar JSlider JTooltipJTree第二节 基本的Swing应用程序HelloSwing应用程序的输出产生下图所示的窗口: 每次用户点击按钮时,标签就会更新。1、HelloSwingimport java.awt.*;import java.awt.event.*; import javax.swing.*; import javax.accessibility.*; public class HelloSwing implements ActionListener private JFrame jFrame; private JLabel jLabel; private JPanel jPanel; private JButton jButton; private AccessibleContext accContext; private String labelPrefix = Number of button clicks: ; private int numClicks = 0; public void go() / Here is how you can set up a particular / lookAndFeel. Not necessary for default. /* try UIManager.setLookAndFeel( UIManager.getLookAndFeel() ); catch ( UnsupportedLookAndFeelException e ) System.err.println(Couldnt use the + default look and feel + e); */jFrame = new JFrame(HelloSwing); jLabel = new JLabel(labelPrefix + 0); jButton = new JButton(I am a Swing button!); / Create a shortcut: make ALT-A be equivalent / to pressing mouse over button. jButton.setMnemonic(a); jButton.addActionListener(this); / Add support for accessibility. accContext = jButton.getAccessibleContext(); accContext.setAccessibleDescription( Pressing this button increments + the number of button clicks); / Set up pane. / Give it a border around the edges. jPanel = new JPanel(); jPanel.setBorder( BorderFactory.createEmptyBorder( 30,30,10,30) ); / Put compts in pane, not in JFrame directly. jPanel.add(jButton); jPanel.add(jLabel); jFrame.setContentPane(jPanel); / Set up a WindowListener inner class to handle / windows quit button. WindowListener wl = new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ; jFrame.addWindowListener(wl); jFrame.pack(); jFrame.setVisible(true); public void actionPerformed(ActionEvent e) numClicks+; jLabel.setText(labelPrefix + numClicks); public static void main(String args) HelloSwing helloSwing = new HelloSwing(); helloSwing.go(); 注意:1)String winPlaf = com.sun.java.swing.plaf.windows.WindowsLookAndFeel;String metalPlaf = javax.swing.plaf.metal.MetalLookAndFeel;String motifPlaf = com.sun.java.swing.plaf.motif.MotifLookAndFeel;try UIManager.setLookAndFeel( motifPlaf ); catch ( Exception e ) System.err.println(Couldnt use the + default look and feel + e); 2) jButton.setToolTipText(Pressing this button increments the number );2、导入Swing包l 导入Swing包l 选择外观和感觉l getLookAndFeel()l 设置窗口容器l JFrame与Frame相似l 你不能直接将组件加入到JFrame中l 一个content pane包含了除菜单条外所有Frame的可视组件 语句行import javax.swing.*装入整个Swing包,它包括了标准Swing组件和功能。选择外观和感觉HelloSwing中给定了应用程序外观和感觉的格式。getLookAndFeel( )方法返回在Windows环境中的外观和感觉。在运行Solaris操作系统的机器上,这个方法则返回一个公共桌面环境(CDE)/Motif的外观和感觉。因为都是缺省值,所以对本例来说,这些行都不是必需的。3、建立窗口 Swing程序用JFrame对象实现了它们的窗口。JFrame类是AWT Frame类的一个子类。它还加入了一些Swing所独有的特性。Hello Swing中,处理JFrame的代码如下:public HelloSwing() JFrame jFrame;JPanel jPanel; .jFrame = new JFrame(HelloSwing); jPanel = new JPanel(); . jFrame.setContentPane(jPanel); 这段代码与使用Frame的代码十分相似。唯一的区别在于,你不能将组件加入到JFrame中。你可以将组件加入到JFrame的content pane中,或者提供一个新的content pane。 一个content pane是一个包含除菜单条外所有框架的可视组件的容器。要获得一个JFrame的content pane,可使用getContentPane( )方法。要设置它的content pane(如前面本例所示),则可使用setContentPane( )方法。4、建立Swing组件Swing应用程序基础l 建立Swing组件l Hello Swing.java示例实例化了4个Swing组件,这4个组件是:JFrame,JButton,JLabel和JPanell 支持辅助技术l HelloSwing.java示例代码支持辅助技术accContext = jButton.getAccessibleContext(); accContext.setAccessibleDescription(Pressing this button increments + the number of button clicks.); Hello Swing程序显式地实例化了4个组件:JFrame,JButton,JLabel和JPanel。 5、支持辅助技术 HelloSwing.java中唯一支持辅助技术的代码是:accContext = jButton.getAccessibleContext();accContext . setAccessibleDescription( Pressing this button increments + the number of button clicks. ); 下列信息集也可由辅助技术使用:jButton = new JButton(Im a Swing button!);jLabel = new JLabel(labelPrefix + 0); jLabel.setText(labelPrefix + numClicks);在JFrame,JButton,JLabel和其他所有组件中,都有内建的Accessibility支持。辅助技术可以很容易地获得文本,甚至与一组件某特定部分相关的文本。第三节 构造一个Swing GUI Swing包定义了两种类型的组件:1)顶层容器(JFrame,JApplet,JWindow,和JDialog)2)轻质组件(其他的J,如JButton,JPanel和JMenu) 顶层容器定义了可以包含轻质组件的框架。特别地,一个顶层Swing容器提供了一个区域,轻质组件可在这个区域中绘制自身。顶层容器是它们对应的重质AWT组件的Swing子类。这些Swing容器依靠它们的AWT超类的本地方法与硬件进行适当的交互。 通常,每个Swing组件在其容器层次结构中都应当有一个位于组件上面的顶层Swing容器。例如,每个包含Swing组件的Applet都应作为JApplet(而它自身又是java.applet.Applet的一个子类)的子类来实现。相似地,每个包含Swing组件的主窗口都应用JFrame来实现。典型地,如果你在使用Swing组件,你将只能使用Swing组件和Swing容器。 Swing组件可以加入到一个与顶层容器关联的content pane中,但绝不能直接加入到顶层容器中。content pane是一个轻质Swing组件,如JPanel。 下面是一个典型Swing程序的GUI容器层次结构图,这个程序实现了一个包含2个按钮,一个文本域和一个列表:Jframe ( a top-level Swing container)x xcontent pane x+-+-+x x xJButton JButton JPanel x +-+x xJTextField JList 下面是关于同样的GUI的另一个容器层次结构,只是在这里,GUI是在浏览器中运行的一个Applet。 x x JApplet ( a top-level Swing container) xcontent pane x+-+-+x x xJButton JButton JPanel x +-+x xJTextField JList

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论