收藏 分享(赏)

Java基础类.doc

上传人:hskm5268 文档编号:7057126 上传时间:2019-05-04 格式:DOC 页数:100 大小:618.50KB
下载 相关 举报
Java基础类.doc_第1页
第1页 / 共100页
Java基础类.doc_第2页
第2页 / 共100页
Java基础类.doc_第3页
第3页 / 共100页
Java基础类.doc_第4页
第4页 / 共100页
Java基础类.doc_第5页
第5页 / 共100页
点击查看更多>>
资源描述

1、104第 11 章 Java 基础类JDK1.2 提供了 Java 基础类,其中的一部分就是 Swing。Swing 是构筑在 AWT 上层的一些组件的集合(为了保证平台独立性,它是用 100%的纯 Java 编写)。本模块介绍了 JFC 和 Swing 图形用户界面的实现。第一节 相关问题讨论以下为与本模块内容有关的问题: AWT 本身是非常有用的,它是一个新的类集合的一部分。这个新的类集合称为 Java 基础类(JFC) ,它作为一个整体,将 GUI 提升到了一个新的水平层次。JFC 究竟是什么,特别地,什么是 Swing?什么事 Swing 可以做但 AWT 不能?第二节 目 标在完成了

2、本模块的学习后,你应当能够: 认识 Java 基础类的关键特性 描述 com.sun.java.swing 包的关键特性 认识 Swing 组件 定义容器和组件,并解释如何联合使用它们来构造一个 Swing GUI 编写,编译并运行一个基本的 Swing 应用程序 高效地使用诸如 Jframe 和 Japplet 等顶层容器105参考文献以下参考文献可提供有关本模块论题的其他细节内容: The Java Tutorial,这是 Sun Microsystems 的一本在线教材,可以从http:/ 得到。第三节 介 绍Java 基础类是关于 GUI 组件和服务的完整集合,它大大简化了健壮 Jav

3、a 应用程序的开发和实现。JFC,作为 JDK1.2 的一个有机部分,主要包含 5 个 API:AWT ,Java2D ,Accessibility,Drag 2.import java.awt.event.*; 3.import com.sun.java.swing.*; 4.import java.awt.accessibility.*; 5.6.public class HelloSwing implements ActionListener 7.private JFrame jFrame; 8.private JLabel jLabel; 9.private JPanel jPanel

4、; 10.private JButton jButton; 11.private AccessibleContext accContext; 12.13.private String labelPrefix = 14.“Number of button clicks: “; 15.private int numClicks = 0; 16.17.public void go() 18.19./ Here is how you can set up a particular 20./ lookAndFeel. Not necessary for default. 21./ 22./ try 23

5、./ UIManager.setLookAndFeel( 24./ UIManager.getLookAndFeel(); 25./ catch (UnsupportedLookAndFeelException e) 26./ System.err.println(“Couldnt 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 J

6、Button(“I am a Swing button!“); 34.35./ Create a shortcut: make ALT-A be equivalent 36./ to pressing mouse over button. 37.jButton.setMnemonic(i); 38.39.jButton.addActionListener(this); 40.HelloSwing(续)1./ Add support for accessibility. 2.accContext = jButton.getAccessibleContext(); 3.accContext.set

7、AccessibleDescription( 4.“Pressing this button increments “ + 5.“the number of button clicks“); 1106.7./ Set up pane. 8./ Give it a border around the edges. 9.jPanel = new JPanel(); 10.jPanel.setBorder( 11.BorderFactory.createEmptyBorder( 12.30,30,10,30); 13.14./ Arrange for compts to be in a single

8、 column. 15.jPanel.setLayout(new GridLayout(0, 1); 16.17./ Put compts in pane, not in JFrame directly. 18.jPanel.add(jButton); 19.jPanel.add(jLabel); 20.jFrame.setContentPane(jPanel); 21.22./ Set up a WindowListener inner class to handle 23./ windows quit button. 24.WindowListener wl = new WindowAda

9、pter() 25.public void windowClosing(WindowEvent e) 26.System.exit(0); 27. 28.; 29.jFrame.addWindowListener(wl); 30.31.jFrame.pack(); 32.jFrame.setVisible(true); 33. 34.HelloSwing(续)1./ Button handling. 2.public void actionPerformed(ActionEvent e) 3.numClicks+; 4.jLabel.setText(labelPrefix + numClick

10、s); 5. 6.7.public static void main(String args) 8.9.HelloSwing helloSwing = new HelloSwing(); 10.helloSwing.go(); 11. 12.11.4.2 导入 Swing 包 导入 Swing 包 选择外观和感觉 getLookAndFeel() 设置窗口容器 JFrame 与 Frame 相似 你不能直接将组件加入到 JFrame 中 一个 content pane 包含了除菜单条外所有Frame 的可视组件111语句行 import com.sun.java.swing.*装入整个 Swi

11、ng 包,它包括了标准 Swing 组件和功能。选择外观和感觉Hello Swing 的第 2228 行给定了应用程序外观和感觉的格式。getLookAndFeel()方法返回在Windows 环境中的外观和感觉。在运行 Solaris 操作系统的机器上,这个方法则返回一个公共桌面环境(CDE)/Motif 的外观和感觉。因为都是缺省值,所以对本例来说,这些行都不是必需的。11.4.3 建立窗口Swing 程序用 JFrame 对象实现了它们的窗口。JFrame 类是 AWT Frame 类的一个子类。它还加入了一些 Swing 所独有的特性。Hello Swing 中,处理 JFrame 的

12、代码如下: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 是一个包含除菜单条(如果有的话)外所有框架的可视组件的容器。要获得一个J

13、Frame 的 content pane,可使用 getContentPane()方法。要设置它的 content pane(如前面本例所示) ,则可使用 set ContentPane()方法。11.4.4 建立 Swing 组件Swing 应用程序基础 建立 Swing 组件 Hello Swing.java 示例实例化了 4 个 Swing 组件,这 4个组件是:JFrame,JButton,JLabel 和 JPanel 支持辅助技术 Hello Swing.java 示例代码支持辅助技术accContext = jButton.getAccessibleContext();accCo

14、ntext.setAccessibleDescription(“Pressing this button increments “ + “ the number of button clicks.“);112Hello Swing 程序显式地实例化了 4 个组件:JFrame,JButton,JLabel 和 JPanel。Hello Swing 用第3345 行中的代码来初始化 JButton。第 33 行创建了按钮。第 37 行将 ACTI 键组合设置为快捷键,用来模拟按钮的点击。第 39 行为点击注册了一个事件处理器。第 4145 行描述了一个按钮,使得辅助技术可以提供有关按钮功能的信息

15、。第 4959 行初始化了 JPanel。这些代码创建了 JPanel 对象,设置它的边框,并将它的布局管理器设置为单列地放置 panel 的内容。最后,将一个按钮和一个标签加入到 Panel 中。Hello Swing 中的Panel 使用了一个不可见的边框,用来在它周围放入额外的填充。11.4.5 支持辅助技术Hello Swing.java 中唯一支持辅助技术的代码是:accContext = jButton.getAccessibleContext();accContext.setAccessibleDescription(“Pressing this button increment

16、s “ + “ 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 GUISwing 包定义了两种类型的组

17、件: 顶层容器(JFrame,JApplet,JWindow ,和 JDialog) 轻质组件(其他的 J,如 JButton,JPanel 和 JMenu)顶层容器定义了可以包含轻质组件的框架。特别地,一个顶层 Swing 容器提供了一个区域,轻质组件可在这个区域中绘制自身。顶层容器是它们对应的重质 AWT 组件的 Swing 子类。这些 Swing 容器依靠它们的 AWT 超类的本地方法与硬件进行适当的交互。通常,每个 Swing 组件在其容器层次结构中都应当有一个位于组件上面的顶层 Swing 容器。例如,每个包含 Swing 组件的 Applet 都应作为 JApplet(而它自身又是

18、 java.applet.Applet 的一个子类)的子类来实现。相似地,每个包含 Swing 组件的主窗口都应用 JFrame 来实现。典型地,如果你在使用 Swing组件,你将只能使用 Swing 组件和 Swing 容器。Swing 组件可以加入到一个与顶层容器关联的 content pane 中,但绝不能直接加入到顶层容器中。content pane 是一个轻质 Swing 组件,如 JPanel。下面是一个典型 Swing 程序的 GUI 容器层次结构图,这个程序实现了一个包含 2 个按钮,一个文本域和一个列表:Jframe ( a top-level Swing container

19、)构造一个 Swing GUI 顶层容器(JFrame,JApplet,JDialog,和 JWindow) 轻质组件(如 JButton,JPanel 和 JMenu) 将 Swing 组件加入到与顶层容器相关联的 content pane 中。113content pane +-+-+ JButton JButton JPanel+-+ JTextField JList下面是关于同样的 GUI 的另一个容器层次结构,只是在这里,GUI 是在浏览器中运行的一个Applet。JApplet ( a top-level Swing container)content pane +-+-+ JBu

20、tton JButton JPanel+-+ JTextField JList下面是构造如上图所示的 GUI 层次结构的代码:1.import com.sun.java.swing.*;2.import java.awt.*; 3.4.public class SwingGUI 5.6.JFrame topLevel; 7.JPanel jPanel; 8.JTextField jTextField; 9.JList jList; 10.11.JButton b1; 12.JButton b2; 13.Container contentPane; 14.15.Object listData =

21、 16.new String(“First selection“), 17.new String(“Second selection“), 18.new String(“Third selection“) 19.; 11420.21.public static void main (String args) 22.SwingGUI swingGUI = new SwingGUI(); 23.swingGUI.go(); 24. 25.26.public void go() 27.topLevel = new JFrame(“Swing GUI“); 28.29./ Set up the JPa

22、nel, which contains the text field 30./ and list. 31.jPanel = new JPanel(); 32.jTextField = new JTextField(20); 33.jList = new JList(listData); 34.35.contentPane = topLevel.getContentPane(); 36.contentPane.setLayout(new BorderLayout(); 37.38.b1 = new JButton(“1“); 39.b2 = new JButton(“2“); 40.conten

23、tPane.add(b1, BorderLayout.NORTH); 41.contentPane.add(b2, BorderLayout.SOUTH); 42.43.jPanel.setLayout(new FlowLayout(); 44.jPanel.add(jTextField); 45.jPanel.add(jList); 46.contentPane.add(jPanel, BorderLayout.CENTER); 47.48.topLevel.pack(); 49.topLevel.setVisible(true); 50. 51.第六节 JComponent 类所有 Swi

24、ng 都作为 JComponent 的子类来实现,而 JComponent 类又是从 Container 类继承而来。Swing 组件从 JComponent 继承了如下功能:JComponent 类 Swing 组件是 JComponent 的子类 边框 双缓冲 提示框 键盘导航 应用程序范围的可插式外观和感觉115 边框你可以用 setBorder()方法来指定在组件周围显示的边框。还可用一个 EmptyBorder 的实例来指定一个组件在其周围留有一定的额外空间。 双缓冲双缓冲可以改善一个频繁被改变的组件的外观。现在你不需要编写双缓冲代码Swing 已为你提供了。缺省情况下,Swing

25、组件是双缓冲的。 提示框通过用 setToolTipText()方法来指定一个字符串,你可以提供给用户有关某个组件的帮助信息。当光标暂停在组件上时,所指定的字符串就会在组件附近的一个小窗口中显示出来。 键盘导航使用 registerKeyboardAction()方法,你可以让用户以键盘代替鼠标来操作 GUI。用户为启动一个动作所必须按下的修饰键与字符的组合,由一个 KeyStroke 对象来表示。 应用程序范围的可插式外观和感觉每个 Java 应用程序在运行时刻有一个 GUIManager 对象,它用于确定运行时刻 Swing 组件的外观和感觉。由于安全性的限制,你可以通过调用 UIMana

26、ger.setLookAndFeel()方法选择所有Swing 组件的外观和感觉。在你所看见的东西背后,每个 JComponent 对象都有一个对应的ComponentGUI 对象,它用来执行所有关于该 JComponent 的绘制、事件处理、大小判定等任务。练习:熟悉 Swing练习目标在本实验中,你将编写、编译和执行两个在 GUI 中使用 Swing 组件的程序。一、准备为了更好地完成这个练习,你必须理解 Swing 组件和 AWT 组件的关系。二、任务水平 1:创建一个基本的 Swing 应用程序1. 使用文本编辑器,创建一个与前面所讨论的 HelloSwing 类似的应用程序。2. 将

27、一个图标与按钮相关联。 (提示你可能需要使用 ImageIcon 类。 )3. 将一个提示框与按钮相关联,这样当鼠标移动到按钮之上时,会显示一个“JFC Button”的提示框。水平 2:用 Swing 组件创建一个文本编辑器1. 创建一个初始的 JFrame,它包含一个 JToolBar,TextArea 和 JLabel。2. 将一个 JMenuBar 与 JFrame 关联起来。3. 创建 JMenuBar 上的第一个菜单。创建一个标记为 JMenu,其 JMenuItems 包括New,Open,Save 和 Close。4. 为每个条目增加一个加速键。使用标签的第一个字母。5. 为每

28、个 JMenuItem 创建一个匿名的 ActionListener,用来处理事件并调用与每个事件对应的方法。6. 将带有 About JMenuItem 的 HelpJMenu 加入到 JMenuBar。分别为 H 和 A 增加快捷键。7. 在与 About JMenuItem 相关联的事件处理器中创建一个模式对话框。8. 在工具条上创建 4 个 JButton,标为 New,Open,Save 和 About。9. 为工具条上的每个按钮增加一个带有适当消息的提示框。此外,创建一个匿名ActionListener 来处理适当的事件。11610.保存并编译程序。三、练习小结讨论 花几分钟时间讨

29、论一下,在本实验练习过程中你都经历、提出和发现了什么。 经验 解释 总结 应用四、检查你的进度在进入下一个模块的学习之前,请确认你能够: 认识 Java 基础类的关键特性 描述 com.sun.java.swing 包的关键特性 认识 Swing 组件 定义容器和组件,并解释如何联合使用它们来构造一个 Swing GUI 编写,编译并运行一个基本的 Swing 应用程序 高效地使用诸如 JFrame 和 JApplet 等顶层容器五、思考题你现在已经知道了如何编写 GUI 应用程序。假设你想在一个 Web 浏览器中运行一个 GUI 应用程序,如何做到这点?117第 12 章 Jvav 小程序介

30、绍本模块讨论了 JDK 对 Applet 的支持,以及 Applet 在编程方式、操作上下文和如何开始等方面与应用程序的区别。第一节 相关问题讨论 以下为与本模块内容有关的问题: Applet 有那些优点?第二节 目 标118在完成了本模块的学习后,你应当能够: 区分独立应用程序和 Applet 编写一个 HTML 标记来调用 Java Applet 描述 Applet 和 AWT 的类层次 创建 HelloWorld.Java Applet 列出 Applet 的主要方法 描述和使用 AWT 的绘图模型 使用 Applet 方法从 URL 读取图像和文件 使用标记配置 Applet第三节 什

31、么是 Applet?Applet 是能够嵌入到一个 HTML 页面中,且可通过 Web 浏览器下载和执行的一种 Java 类。它是Java 技术容器 (container)的一种特定类型,其执行方式不同于应用程序。一个应用程序是从它的 main()方法被调用开始的,而一个 Applet 的生命周期在一定程度上则要复杂得多。本模块分析了 Applet 如何运行,如何被装载到浏览器中,以及它是如何编写的。12.3.1 装入 Applet由于 Applet 在 Web 浏览器环境中运行,所以它并不直接由键入的一个命令启动。你必须要创建一个 HTML 文件来告诉浏览器需装载什么以及如何运行它。什么是

32、Applet? 能嵌入到一个 HTML 页面中且可通过 Web 浏览器下载和执行的一种 Java 类 可以以下方式装载: 浏览器装载 URL 浏览器装载 HTML 文档 浏览器装载 Applet 类 浏览器运行 Applet1191. 浏览器装入 URL2. 浏览器装入 HTML 文档3. 浏览器装入 Applet 类4. 浏览器运行 Applet12.3.2 Applet 的安全限制由于通过网络装载,Applet 的代码具有一种内在的危险性。如果有人编写了一个恶意的类来读取你的密码文件,并把它通过 Internet 传送,会产生怎样的后果呢?所能够控制的安全程度是在浏览器层次上实现的。大多数

33、浏览器(包括 Netscape Nevigator)缺省地禁止以下操作: 运行时执行另一程序 任何文件的输入/输出 调用任何本地方法 尝试打开除提供 Applet 的主机之外的任何系统的 Socket这些限制的关键在于,通过限制 Applet 对系统文件的存取来阻止它侵犯一个远程系统的隐私或破坏该系统。禁止执行另一程序和不允许调用本地方法限制了 Applet 启动未经 JVM 检查的代码。对Socket 的限制则禁止了与另一个可能有危害性的程序的通信。JDK1.2 提供了一种方式,它指定了一个特殊的“保护域”或一个特殊 Applet 运行的安全性环境。远程系统检查原始的 URL 以及它下载的

34、Applet 的签名,和一个含有从特殊的 Applet 到特殊保护域的映射入口的本地文件进行比较。因此,来自特别位置的特殊 Applet 具有一些运行特权。Applet 的安全限制 多数浏览器禁止以下操作: 运行时执行另一程序 任何文件的输入/输出 调用任何本地方法 尝试打开除提供 Applet 的主机之外的任何系统的Socket120 编写一个 Applet要编写一个 Applet,必须首先用以下方式创建一个类:import java.applet.*;public class HelloWorld extends Applet Applet 的类必须为 public,且它的名称必须与它所在

35、的文件名匹配;在这里,就是HelloWorld.java。而且,该类必须为 java.applet.Applet 的子类。Applet 类的层次Java.applet.Applet 类实际上是 java.awt.Panel 的子类。Applet 和 AWT 类的层次如下:这种层次关系显示,一个 Applet 可直接用作一个 AWT 布局的起始点。因为 Applet 为一 Panel,所以它有一个缺省的流(flow)布局管理器。 Component,Container 和 Panel 类的方法被 Applet 类继承了下来。12.4.1 主要的 Applet 方法在一个应用程序中,程序由 mai

36、n()方法处进入,而在一个 Applet 中却不是这样。在构造函数完成了它的任务后,浏览器调用 init()对 Applet 进行基本的初始化操作。init()结束后,浏览器调用另一个称为 start()的方法。本模块稍后将对 start()做更细致的剖析;start()通常在 Applet 成为可见时被调用。方法 init()和 start()都是在 Applet 成为“活动的”之前运行完成的,正因为这样,它们都不能用来编写 Applet 中继续下去的动作。实际上,与一个简单应用程序中的方法 main()不同的是,没有什么方法的执行是贯穿于 Applet 的整个生命过程中的。你在后面将看到如

37、何使用线程来实现这一特色。此外,你在编写 Applet 子类时可用的方法还有:stop(),destroy()和 paint()。12.4.2 Applet 显示主要的 Applet 方法 init() start() stop() destroy() paint()Applet 显示 Applet 在本质上是图形方式的 方法 paint()由浏览器环境调用121Applet 本质上是图形方式的,所以尽管你可以提出 System.out.println()的调用请求,通常也不能这样做,而是应该在图形环境中创建你的显示。你可以通过创建一个 paint()方法在 Applet 的 panel 上绘

38、图。只要 Applet 的显示需要刷新,paint()方法就会被浏览器环境调用。例如,当浏览器窗口被最小化或被要求以图标方式显示时,这种调用就会发生。你应该编写自己的 paint()方法,以使它在任何时候被调用时都能正常地工作。对它的调用是异步产生的,且由环境而不是程序来驱动。12.4.3 paint()方法和图形对象paint()方法带有一个参数,它是 java.awt.Graphics 类的一个实例。这个参数总是建立该 Applet 的panel 的图形上下文。你能用这个上下文在你的 Applet 中绘图或写入文本。下面是使用 paint()方法写出文字的一例。1.import java.

39、awt.*; 2.import java.applet.*; 3.4.public class HelloWorld extends Applet 5.6.public void paint(Graphics g) 7.g.drawString(“Hello World!“, 25, 25); 8. 9.注drawString 方法的数字型参数为文本起始处的 x 和 y 的象素坐标。 (0,0)表示左上角。这些坐标是针对字体的基线来讲的,所以在 y 坐标为 0 处写的结果是:文字的大部分在显示器顶部的上方,只有象字母 y 尾部那样的下面部分是可见的。第五节 Applet 的方法和 Applet

40、 的生命周期Applet 的生命周期比所讨论的要稍微复杂一些。与其生命周期相关的有三个主要方法:init(),Applet 的方法和 Applet 的生命周期 init() 在 Applet 创建时被调用 可用于初始化数据值 start() 当 Applet 成为可见时运行 stop() 当 Applet 成为不可见时运行122start()和 stop()。12.5.1 init()本成员函数在 Applet 被创建并装入一个能支持 Java 技术的浏览器(如 appletviewer)时被调用。Applet 可用这个方法来初始化数据的值。本方法只在 Applet 首次装入时被调用,并且在调

41、用 start()之前执行完成。12.5.2 start()init()方法一完成,start()就开始执行。它的执行使得 Applet 成为“活动”的。无论 Applet 何时成为可见的,它同样要执行一次,如:当浏览器在被图标化后又恢复时,或者当浏览器在链接到另一个URL 后又返回含有这个 Applet 的页面时。这一方法的典型用法是启动动画和播放声音。1.public void start() 2.musicClip.play(); 3.12.5.3 stop()stop()方法是在 Applet 成为不可见时被调用的,这种情况一般在浏览器被图标化或链接到另一个URL 时会出现。Apple

42、t 用该方法使动画停止。1.public void stop() 2.musicClip.stop(); 3. start()和 stop()形成一对动作:典型地,start() 激活 Applet 中的某一行为,而 stop()则可将它禁止。第六节 AWT 绘图除了基本的生命周期外,Applet 还有与其显示有关的一些重要的方法。这些方法的声明和文档在AWT 组件类中。使用 AWT 做显示处理时遵循正确的模型是非常重要的。更新显示由一种被称为 AWT 线程的独立的线程来完成。这个线程可用来处理与显示更新相关的两种情况。第一种情况是显露(exposure ) ,它或在首次显示时,或在部分显示已

43、被破坏而必须刷新时出现。显示的破坏可能发生在任何时刻,因此,你的程序必须能在任意时刻更新显示。第二种情况是在程序重画带有新内容的画面时。这种重画可能会要求首先擦除原来的图像。12.6.1 Paint(Graphics g)方法显露处理自动地发生,且导致对 paint()方法的一次调用。一种 Graphics 类的被称为裁剪矩形的设备常用于对 paint()方法进行优化。除非必要,更新不会完全覆盖整个图形区域,而是严格限制在被破坏的范围内。12.6.2 repaint()方法AWT 绘图 paint (Graphics g) repaint() update(Graphics g)123对 re

44、paint()的调用可通知系统:你想改变显示,于是系统将调用 paint()。12.6.3 update(Graphics g)方法repaint()实际上产生了一个调用另一方法 update()的 AWT 线程。update 方法通常清除当前的显示并调用 paint()。update() 方法可以被修改,如:为了减少闪烁可不清除显示而直接调用 paint()。12.6.4 方法的交互下面的框图描述了 paint(),update()和 repaint()方法间的内在关系。 12.6.5 Applet 的显示策略Applet 模型要求你采取一种特定的策略来维护你的显示: 维护一个显示模型。这个

45、模型是对为再次提供显示而所需做的事情的一个定义。关于如何去做的指令在 paint()方法中被具体化;这些指令所用的数据通常是全局成员变量。 使 paint()提供仅仅基于该模型的显示。这使得无论 paint()何时被调用,它都能以一致的方法再生该显示,并正确地处理显露问题。 使得程序对显示的改变,通过更新该模型而调用 repaint()方法来进行,以使 update()方法(最终是 paint()方法)被 AWT 线程调用。注一个单一 AWT 线程处理所有的绘图组件和输入事件的分发。应保持 paint()和 update()的简单性,以避免它们使AWT 线程发生故障的可能性更大;在极端情况下,

46、你将需要其他线程的帮助以达到这一目的。有关线程的编程是模块 14的主题。Applet 的显示策略 维护一个显示模型 使 paint()提供仅仅基于这个模型的显示 更新这个模型并调用 repaint()来改变显示124第七节 什么是 appletviewer?Applet 通常运行于一个 Web 浏览器中,如 HotJava TM 或 Netscape Navigator,它们有支持 Java 软件程序运行的能力。为了简化和加速开发过程,JDK 应运而生,它附带有一个专为查看 Applet 而设计但不支持 HTML 页面查看的工具。这个工具就是 appletviewer。appletviewer

47、 是使你不必使用 Web 浏览器即可运行 Applet 的一个 Java 应用程序。它犹如一个“最小化的浏览器” 。appletviewer 读取命令行中 URL 所指定的 HTML 文件。这个文件必须包含装入及执行一个或多个Applet 的指令。 appletviewer 忽略了所有其他的 HTML 代码。它不能显示普通的 HTML 或嵌人在一个文本页中的 Applet。12.7.1 用 appletviewer 启动 Appletappletviewer 将一个框架样式的区域粘贴在屏幕上,然后实例化该 Applet 并将这个 Applet 实例贴在已有的框架中。appletviewer 带

48、有一个命令行参数形式的 URL,它指向一个含有 Applet 引用的 HTML 文件。这个Applet 引用是一个指定了 appletviewer 要装载的代码的 HTML 标记。注意,这个标记的通用格式与任何其他的 HTML 相同,即,用两个符号来分隔指令。上例中显示的所有部分都是必需的,你必须使用和 。部分指明了代码的入口,以及宽度和高度。注通常,你应该把 Applet 当作是固定大小的,并且使用标记中所指定的大小。12.7.2 使用 appletviewer提要appletviewer 带有一个指向包含 标记的 HTML 文件的 URL,这个 URL 被作为命令行参数。appletviewer -debug URLs . appletviewer 仅有的合法选项是 debug,它使得 Applet 在 Java 调试器 jdb 中启动。若用带 g 选项的方式编译你的 Java 代码,则可在调试器中看到源代码。什么是 appletviewer? 使你不需 Web 浏览器就能运行 Applet 的一个 Java 应用程序 它把 HTML 文件作为一个参数来装载appletViewer HelloWorld.html 它至少需要以下 HTML 代码:125范例以如下所示的 appletviewer 命令启动 appletviewer:c:j

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报