SUN_JAVA_培训专用教材c11-15.docx
《SUN_JAVA_培训专用教材c11-15.docx》由会员分享,可在线阅读,更多相关《SUN_JAVA_培训专用教材c11-15.docx(98页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java基础类JDK1.2提供了 Java基础类,其中的一部分就是Swing。Swing是构筑在AWT上层的一些组件的集 合(为了保证平台独立性,它是用100%的纯Java编写)。本模块介绍了 JFC和Swing图形用户界面的实 现。The Java Ptognnnming Language BasicsGtt飞立UtfiB 3 阳d3d”Tons.M IObject-Oriented Piograrrming6声Lvi 駐 FentuttfException Handling De.“reThtAWT EVtfitNMd,OeAWT litcwyApplets DtBoOjdSm mAp 口
2、出MultithreadingCo mmunicatio nsvrf nJ !即叫Y第一节相关问题讨论以下为与本模块内容有关的问题: AWT本身是非常有用的,它是个新的类集合的一部分。这个新的类集合称为Java基础类 (JFC),它作为个整体,将GUI提升到了一个新的水平层次。JFC究竟是什么,特别地,什 么是Swing?什么事Swing可以做但AWT不能?第二节目标在完成了本模块的学习后,你应当能够:认识Java基础类的关键特性 描述com.sun.java.swing包的关键特性 认识Swing组件 定义容器和组件,并解释如何联合使用它们来构造个Swing GUI 编写,编译并运行一个基本
3、的Swing应用程序 高效地使用诸如Jframe和Japplet等顶层容器参考文献以下参考文献可提供有关本模块论题的其他细节内容: The Java Tutorial ,这是 Sun Microsystems 的一本在线教材,可以从 httD: 得到 第三节介绍介绍 Java基础类包含5个API AWT Java2D Accessibility Drag & Drop SwingJava基础类是关于GU!组件和服务的完整集合,它大大简化了健壮Java应用程序的开发和实现。JFC,作为 JDK1.2 的个有机部分,主要包含 5 个 API: AWT, Java2D, Accessibility,
4、 Drag & Drop, Swing。它提供了帮助开发人员设计复杂应用程序的一整套应用程序开发包。正如前面那些模块中所讨论的那样,AWT组件为各类Java应用程序提供了多种GUI工具。Java2D是图形API,它为Java应用程序提供了一套高级的有关二维(2D)图形图像处理的类。Java2D API扩展了 java.awt和java.awt. image类,并提供了卡富的绘图风格,定义复杂图形的机制和精 心调节绘制过程的方法和类。这些API使得独立于平台的图形应用程序的开发更加简便。Accessibility API提供了一套高级工具,用以辅助开发使用非传统输入和输出的应用程序。它提供了个辅
5、助的技术接口,如:屏幕阅读器,屏幕放大器,听觉文本阅读器(语音处理)等等。Drag & Drop技术提供了 Java和本地应用程序之间的互操作性,用来在Java应用程序和不支持Java 技术的应用程序之间交换数据。JFC模块的重点在Swing。Swing用来进行基于窗口的应用程序开发,它提供了一套丰富的组件和 作框架,以指定GUI如何独立于平台地展现其视觉效果。Swing介绍可插的外观和感觉应用程序看上去是与平台有关的有客户化的Swing组件 Swing的体系结构它是围绕着实现AWT各个部分的API构筑的大多数组件不象AWT那样使用与平台相关的 实现Swing提供了一整套GUI组件,为了保证可
6、移植性,它是完全用Java语言编写的。可插的外观和感觉可插的外观和感觉使得开发人员可以构建这样的应用程序:它们可以在任何平台上执行,而且看上 去就象是专门为那个特定的平台而开发的。个在Windows环境中执行的程序,似乎是专为这个环境而 开发的;而同样的程序在Unix平台上执行,它的行为又似乎是专为Unix环境开发的。开发人员可以创建自己的客户化Swing组件,带有他们想设计出的任何外观和感觉。这增加了用于 跨平台应用程序和Applet的可靠性和 致性。个完整应用程序的GUI可以在运行时刻从一种外观和 感觉切换到另种。Swing的体系结构与AWT比较,Swing提供了更完整的组件,引入了许多新
7、的特性和能力。Swing API是围绕着实现 AWT各个部分的API构筑的。这保证了所有早期的AWT组件仍然可以使用。AWT采用了与特定平台 相关的实现,而绝大多数Swing组件却不是这样做的,因此Swing的外观和感觉是可客户化和可插的。Your Application上图显示了 JFC 各个部分之间的相互关系。Java2D, Accessibility, Drag & Drop和 Accessibility API 是AWT和JFC的一部分,但它们不属于Swing。这是因为,这些组件使用了一些本地代码,而Swing 却不是这样的。Swing是围绕着个称为JComponent的新组件构建的,
8、而JComponent则由AWT的容器类扩展而 来。Swing的层次结构下图说明了 Swing组件的层次结构:j ava. awt. Containercom.sun.java, swing.JComponentJPasswordFieldJTextComponentAbstractButtonJTextAreaJTextField - iHtmlEditorKitJPanel JComboBox JLabel JLayeredPane JList JToolBar JMenuBar JPopupMenu JPane JScrollBar JScrollPane JSlider JTable
9、JSeparator JTree JProgressBar JRootPane JSplitPane JTabbedPaneJToggleButton JButton JMenuItemJCheckBox JRadioButtonJRadioButtonMenuItem JCheckBoxMenuItem JMenuSwing GUI使用两种类型的类,即GUI类和非GUI支持类。GUI类是可视的,它从JComponent继 承而来,因此称为“J”类。非GUI类为GUI类提供服务,并执行关键功能;因此它们不产生任何可视的输出。注一Swing的事件处理类是非GUI类的一例.Swing组件Swing
10、组件主要为文本处理、按钮、标签、列表、pane、组合框、滚动条、滚动pane、菜単、表格 和树提供了组件。其中一些组件如下所示:Swing!J Applet MondayJButtonMondaySelect on OptionTicoda Wsdnesdey Thursday FrdayJComboBoxIs 3WINO cool?I : Yge:j| _Cancel |JOptionPaneJanuary February四MarchAprilJListJ LabelSwing组件(续)JScrollPaneFirst Na.Last NameIvarkAndrewsTomBanAlarC
11、hi ngJ9ffCinkinsJTableJTooltipJSliderR tabs3.gif Tree View 曰 drawingPl treeviewJTree第四节基本的Swing应用程序HelloSwing应用程序的输出产生下图所示的窗口:HelloSwinglam a Swing button!Number of b utton clicks: 4每次用户点击按钮时,标签就会更新。11.5.1 HelloSwing1. import java.awt.*;1.1 mport java.awt.event.*;1.2 mport com.sun.java.swing.*;1.3 m
12、port java.awt.accessibility.*;5 .6 .public class HelloSwing implements ActionListener 7 .private JFrame jFrame;8 .private JLabel jLabel;9 .private JPanel jPanel;10 .private JButton jButton;11 .private AccessibleContext accContext;12 .13 .private String labelPrefix =14 .Number of button clicks:15 .pr
13、ivate int numClicks = 0;16 .17 .public void go() 18 .19 ./ Here is how you can set up a particular20 ./ lookAndFeel. Not necessary for default.21 ./22 ./ try 23 ./ UIManager.setLookAndFeel(24 ./ UIManager.getLookAndFeel();25 ./ catch (UnsupportedLookAndFeelException e) 26 ./ System.err.println(Could
14、nt use the +27 ./ default look and feel + e);28 ./ 29 .30 .jFrame = new JFrame(HelloSwing);31 .jLabel = new JLabel(labelPrefix + 0);32 .33 .jButton = new JButton(I am a Swing button!);34 .35 ./ Create a shortcut: make ALPA be equivalent36 ./ to pressing mouse over button.37.jButton.setMnemonic(,i,);
15、38.39.jButton.addActionListener(this);40.HelloSwing (续)1 ./ Add support for accessibility.2 .accContext = jButton.getAccessibleContext();3 .accContext.setAccessibleDescription(4 .Pressing this button increments +5 .the number of button clicks);6 .7 ./ Set up pane.8 ./ Give it a border around the edg
16、es.9 .j Panel = new JPanel();10 .jPaneI.setBorder(11 .BorderFactory.createEmptyBorder(12.30,30,10,30);13 .14 ./Arrange for compts to be in a single column.15 .jPanel.setLayout(new GridLayout(0, 1);16 .17 ./ Put compts in pane, not in J Frame directly.18 .jPanel.add(jButton);19 .j Panel.add(j Label);
17、20.jFrame.setContentPane(jPanel);21 .22 ./ Set up a WindowListener inner class to handle23 ./ windows quit button.24 .WindowListener wl = new WindowAdapter() 25.public void windowClosing(WindowEvent e) 26.System.exit(0);27.)28.;29.jFrame.addWindowListener(wl);30.31.jFrame.pack();32.jFrame.setVisible
18、(true);33 .)34 .HelioSwing (续)1 ./ Button handling.2 .public void actionPerformed(ActionEvent e) 3.numClicks+;4 .jLabel.setText(labelPrefix + numClicks);5 .)6 .7 .public static void main(StringJ args) 8 .9 .HelloSwing helloSwing = new HelloSwingO;10 .helloSwing.go();11 .12 .11.4.2 导入 Swing 包导入Swing包
19、选择外观和感觉 getLookAndFeel()设置窗口容器 JFrame 与 Frame 相似 你不能直接将组件加入到JFrame中 个content pane包含了除菜单条外所有Frame的可视组件语句行import com.sun.java.swing.装入整个Swing包,它包括了标准Swing组件和功能。选择外观和感觉Hello Swing的第22 28行给定了应用程序外观和感觉的格式。getLookAndFeel。方法返回在 Windows环境中的外观和感觉。在运行Solaris操作系统的机器上,这个方法则返回一个公共桌面环境 (CDE) /Motif的外观和感觉。因为都是缺省值,
20、所以对本例来说,这些行都不是必需的。H.4.3建立窗Swing程序用JFrame对象实现了它们的窗口。JFrame类是AWT Frame类的,个子类。它还加入了 些Swing所独有的特性。Hello Swing中,处理JFrame的代码如下:public HelloSwingO JFrame j Frame;JPanel jPanel;jFrame = new JFrame(,HelloSwingM);jPanel = new JPanel();jFrame.setContentPane(jPanel);这段代码与使用Frame的代码十分相似。唯一的区别在于,你不能将组件加入到JFrame中。
21、你可 以或者将组件加入到JFrame的content pane中,或者提供个新的content pane个content pane是个包含除菜单条(如果有的话)外所有框架的可视组件的容器。要获得一个 JFrame (Kj content pane,可.使用getContentPane()方法。要设置它的content pane (如前面本例所示),则 可使用 set ContentPane。方法。11.4.4 建立Swing组件Swing应用程序基础 建立Swing组件 Hello Swing.java示例实例化了 4个Swing组件,这4 个组件是:JFrame, J Button, J L
22、abel 和 JPanel 支持辅助技术 Hello Swing.java示例代码支持辅助技术accContext = jButton.getAccessibleContext();accContext.setAccessibleDescription(Pressing this button increments +the number of button clicks.1);Hello Swing 程序显式地实例化了 4 个组件:JFrame, JButton, JLabel 和 JPanel。Hello Swing 用第 33-45行中的代码来初始化JButton。第33行创建了按钮。第
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SUN_JAVA_ 培训 专用 教材 c11 15
限制150内