📄 0063.htm
字号:
<html>
<head>
<title>新时代软件教程:操作系统 主页制作 服务器 设计软件 网络技术 编程语言 文字编辑</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style>
<!--
body, table {font-size: 9pt; font-family: 宋体}
a {text-decoration:none}
a:hover {color: red;text-decoration:underline}
.1 {background-color: rgb(245,245,245)}
-->
</style>
</head>
<p align="center"><script src="../../1.js"></script></a>
<p align="center"><big><strong>Java简明教程</strong></big></p>
<div align="right">---(原著/Marshall Brain 编译/张圣华)</div>
<p> 使用CGI脚本语言,可以让你开发能在服务器上运行的可执行代码。使用Java可以让程序员建立在客户端执行的的代码。因为Java是一个完整的编程语言,所以用它几乎可以做任何事情。在Java程序内部,你可以画图、绘制位图、获取用户事件并响应之、装入URL等等。</p>
<p> 如果你查看当今web上正在使用的Java applet,你可以会发现web程序员主要使用Java来完成四个任务:
</p>
<table border="0" cellpadding="0" cellspacing="0" width="100%" msimagelist>
<tr msimagelist>
<td valign="baseline" width="42" msimagelist><img src="../images/anabull2.gif" tppabs="http://www.nease.net/~zhangsh/images/anabull2.gif" width="12" height="12" hspace="15"></td>
<td valign="top" width="100%">建立运动的图形,包括位图循环、移动的位图和动画。例如,白宫主页上飘动的国旗就是用Java
applet来建立的。</td msimagelist>
</tr>
<tr msimagelist>
<td valign="baseline" width="42" msimagelist><img src="../images/anabull2.gif" tppabs="http://www.nease.net/~zhangsh/images/anabull2.gif" width="12" height="12" hspace="15"></td>
<td valign="top" width="100%">你不想通过CGI脚本语言从服务器上下载的图形对象(条型图表、曲线图、图表等)的建立。典型的图表是通过下面的方法产生的:CGI脚本语言来访问数据库,产生一个GIF,然后送到你的浏览器上。你可能不想这么做,因为这样做可能要下载一个比较大的GIF,或由于你不想在服务器端产生GIF。</td msimagelist>
</tr>
<tr msimagelist>
<td valign="baseline" width="42" msimagelist><img src="../images/anabull2.gif" tppabs="http://www.nease.net/~zhangsh/images/anabull2.gif" width="12" height="12" hspace="15"></td>
<td valign="top" width="100%">建立一个新的“控制”。如果你建立一个具有特殊性质的按钮,或一个外观象图形的更复杂的控制,你就要使用Java。因为你可以绘图和获取事件,你可以建立任何你想建立的控制。</td msimagelist>
</tr>
<tr msimagelist>
<td valign="baseline" width="42" msimagelist><img src="../images/anabull2.gif" tppabs="http://www.nease.net/~zhangsh/images/anabull2.gif" width="12" height="12" hspace="15"></td>
<td valign="top" width="100%">建立一个由一组诸如编辑框、按钮、检查框等控制所组成的应用程序。这有些类似于JavaScript所做的,但是程序完全是自包容的和编译的以使你不会泄露原代码。</td msimagelist>
</tr>
</table msimagelist>
<p> Java是一种从C++继承来的完整的面向对象程序设计语言。它具有C++的所有优点,但却取消了一些不可靠的功能,如指针和不安全性。Java是通过库来扩展自己的。例如它有一个称为AWT的用户界面对象的库、一个I/O库、一个网络库等等。你可以使用Java来建立装到web上并在浏览器上执行的的applet以及单独的应用程序。我们将重点讨论浏览器上用的applet,但是由于Java具有很强的能力,你可以把Java用作基本的开发环境。</p>
<p> 如果你已经掌握了C++和面向对象程序概念,则对学习Java是很有帮助的。</p>
<h3><font color="#006633" mstheme>最简单的程序</font mstheme></h3>
<p> 在编译和检验你自己的Java applet前,你需要两样东西:Java编译器和支持Java的浏览器。这些编译器带有很多例子代码,对你是很有用的。</p>
<p>如果你已经有了编译器和支持Java的浏览器,则可以用文本编辑器输入下面的代码“欢迎来到Java世界”:
</p>
<blockquote>
<pre>//Hello.java
import java.awt.*;
import java.applet.*;
public class Hello extends Applet
{
public void paint(Graphics g)
{
for (int x = 0 ; x < size().height ; x++)
{
g.drawString("欢迎来到Java世界!", 10, x*15);
}
}
}</pre>
</blockquote>
<p> 为了编译该程序,把它存成名为“Hello.java”的文本文件。在命令行上键入:</p>
<blockquote>
<pre>javac Hello.java</pre>
</blockquote>
<p><i> 要注意字母的大小写,即使在Windows 95和Windows NT中也是如此。</i></p>
<p> 该命令会编译上面的Java代码,并建立一个称为“Hello.class”的文件,它是包含有二进制代码的applet。注意,如果类名称与文件名称相同,你会省去一些麻烦。</p>
<p> 编译器所产生的是<i>applet</i>。applet是一个二进制文件,它包含有可执行的代码。为了执行该代码,你需要把它装如到支持Java的浏览器中。用下面的HTML来实现,<i>你应该把它与你的applet</i><em>装到同一目录中</em>:
</p>
<blockquote>
<pre><title>欢迎来到Java世界 Demo</title>
<hr>
<applet code=Hello.class width=300 height=120>
</applet>
<hr></pre>
</blockquote>
<p> 在你的浏览器中装入上面的HTML代码,就可以看到“欢迎来到Java世界”applet在该HTML所在页中的一个300×120小窗口中运行的结果。</p>
<h3><font color="#006633" mstheme><strong>理解程序</strong></font mstheme></h3>
<p>
让我们一行行来研究一下上面的代码,看看它是如何工作的。在下面的列表中,我们为了讨论的方便,给代码加上了行号:
</p>
<blockquote>
<pre>//Hello.java
1 import java.awt.*;
2 import java.applet.*;
3 public class Hello extends Applet
4 {
5 public void paint(Graphics g)
6 {
7 for (int x = 0 ; x < size().height ; x++)
8 {
9 g.drawString("欢迎来到Java世界!", 10, x*15);
10 }
11 }
12}</pre>
</blockquote>
<p> 头两行的“import”是输入库,这有些象C或C++的include语句。但是在Java中,库是一种层次结构的存在的,你可以只装入你所需要的那一段。这里我们java库装入了applet和AWT段。</p>
<p> 第三行中的代码说明了一个称为Hello的新类。文件名与类名应该是相同的,因为该applet被称为Hello,其文件名也应该是Hello.java,前面曾经提到过。该类是从Applet类继承来的,并进行了扩展。applet类有一个名为paint的方法(实际上,
paint方法来自超级类Applet的Component)。该方法是在exposure上调用的。它接收一个指向用于该applet的Graphics类引用。</p>
<p> 用于该applet的Graphics类是applet在浏览器中的“窗口”。当你使用该Graphics类绘图时,所绘制的图形出现在该applet的窗口中。在第5行,paint方法已经被重载,并循环10次来绘制“欢迎来到Java世界!”字符(第9行)。</p>
<p> 在这一点上,你可能要花些功夫看一下文档中的Graphics类。该类包含有很多有用的绘图函数:直线、圆、盒等等。你可以试试这些函数。你只要简单地用不同的函数替换上面的paint方法就可以看到他们的效果。也可以试一下Graphics类中的“set”函数。例如,下面的代码演示了如何使用颜色和字体:</p>
<blockquote>
<pre>import java.awt.*;
import java.applet.*;
public class Hello extends Applet
{
public void paint(Graphics g)
{
g.setColor(Color.red);
g.setFont(new Font("Helvetica", Font.PLAIN, 24));
for (int x = 0 ; x < size().height ; x++)
{
g.drawString("欢迎来到Java世界!", 10, x*15);
}
}
}</pre>
</blockquote>
<p><b><i> 注意: 以我们的经验,当你运行你的Java代码时,最好刷新一下浏览器的HTML页。</i></b></p>
<h3><font color="#006633" mstheme><strong>AWT库</strong></font mstheme></h3>
<p> Java的AWT库允许你把用户界面建立在Java applet中。AWT库包含有所有的用于建立简单界面所需要的控制:按钮、编辑框、检查框等等。该库也有几个不同的包容器用来安排屏幕的控制,并带有很多特性。</p>
<p>
下面的代码演示了如何建立按钮,并把按钮和字符都放到一个称为BorderLayout的包容器中:</p>
<blockquote>
<pre>// ButtonTest.java
import java.awt.*;
import java.applet.*;
public class ButtonTest extends Applet
{
int y;
Button b;
public ButtonTest()
{
y = 10;
setLayout(new BorderLayout());
b = new Button("应用");
add("North", b);
}
public void paint(Graphics g)
{
for (int x = 0 ; x < size().height ; x+=10)
{
g.drawString("欢迎来到Java世界!", y, x);
}
}
}</pre>
</blockquote>
<p> 该程序与前面的欢迎来到Java世界程序可能没有很大的差别。其区别就在于该applet的构造函数。在该构造函数中,代码初始化了变量“y”,设置了外观,建立了一个新的显示“应用”按钮控制,然后把按钮添加到布局中。BorderLayout有5个附属点:North、South、East、West和Center。一旦你附带了它们,就会依赖applet在屏幕上的大小来处理对象的精确位置。在这种情况下,我们把按钮放在布局中的North(顶)部。窗口还包含有用paint方法绘制的字符。</p>
<p> 用上面介绍的步骤编译并运行该程序。你会看到applet会绘制按钮,然后用“欢迎来到Java世界”填充applet窗口的其余部分。</p>
<p> 看一下文档中的Button控制和BorderLayout包容器,你会对选项有个感性认识。看一下Applet类文档中的setLayout和add方法。注意applet自己是如何“获得”外观布局并向其添加东西的。再看一下文档中的其它几个控制,并试验一下。</p>
<h3><font color="#006633" mstheme><strong>获取事件</strong></font mstheme></h3>
<p>
当你单击上面例子中的按钮时,它不会做任何事情。为了让它做些事情,你需要处理它的事件。最简单的办法,是在applet类中添加事件处理函数。你也可以从按钮的基类继承一新的按钮类,然后在那里处理事件。</p>
<p> 下面的代码说明了该如何处理简单的事件:</p>
<blockquote>
<pre>// ButtonTest.java
import java.awt.*;
import java.applet.*;
public class ButtonTest extends Applet
{
int y;
Button b;
public ButtonTest()
{
y = 10;
setLayout(new BorderLayout());
b = new Button("应用");
add("North", b);
}
public void paint(Graphics g)
{
for (int x = 0 ; x < size().height ; x+=10)
{
g.drawString("欢迎来到Java世界!", y, x);
}
}
public boolean action(Event ev, Object arg)
{
if (ev.target instanceof Button)
{
y+=10;
repaint();
return true;
}
return false;
}
}</pre>
</blockquote>
<p> 在该applet中的“action”方法选择applet的事件流。当每个事件流到达时,它检验其是否来自Button对象。如果是,它会增加y并使该applet重绘自己。当你运行该程序时,你会发现每当你按一次按钮时,欢迎来到Java世界列都会移动10个象素。</p>
<p> 如果你的applet包含有两个按钮,一个North,一个South,你要使它们响应不同,则上面的代码会有问题。你需要再添加一行代码:</p>
<blockquote>
<pre>public boolean action(Event ev, Object arg)
{
if (ev.target instanceof Button)
{
if("应用".equals(ev.arg))
{
y+=10;
repaint();
return true;
}
}
return false;
} </pre>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -