📄 4.html
字号:
Window类 的 继 承, 它 显 示Fame及 其 所 有 组 件。 在mouseDown()函 数
里 我 们 看 到 两 个 函 数:hide()和dispose()。hide()只 简 单 地 使
Frame不 可 见。 你 可 以 在 任 何 时 候 调 用 它 来 隐 藏 窗 口。
dispose()函 数 释 放 由Frame占 有 的 系 统 资 源。 只 有 在 你 不 需
要Frame时 才 调 用 它。
l 构 造 函 数 Memo例 子 还 包 含 了 一 个 新 函 数Memo()。 其 实 这
个 类 有 两 个Memo()函 数! 任 何 与 类 名 相 同 的 函 数 都 是 构 造
函 数。 它 在 创 建 一 个 新 对 象 时 被 调 用。 你 可 以 认 为 它 是
一 个 对 象 的init()初 始 化 函 数。 为 什 么 需 要 两 个 构 造 函 数
呢? 有 了 两 个 构 造 函 数, 我 们 可 以 利 用 多 态 性 的 优 点, 有
两 种 方 法 创 建 一 个 新Memo对 象。 我 们 可 以 简 单 的 创 建 使
用 缺 省 信 息 的Memo对 象: m = new Memo(); 或 者, 我 们 可 以 自 己
提 ?copy; 信 息: m = new Memo("Our message");
Frame控 制 本 程 序 的 最 后 功 能 是 在main()里 建 立 并 显 示
frame。 它 由 以 下 两 步 实 现: //Step 1 m = new Memo();
//Step 2 m.start(); 第 一 步 初 始 化memo对 象。 我 们 象 操 作 其 它
对 象 一 样 操 作m。 为 显 示frame, 我 们 需 要 调 用 show()。 这 在
第 二 步 里 实 现。 另 一 个 要 注 意 的 是 程 序 的健 壮 性: 我 们 基
本 的frame里 没 有 包 含 处 理 标 准 WINDOW_DESTROY消 息 的 函 数。
这 样, 你 将 不 能 在 窗 口 的 控 制 菜 单 里 选 中"Quit"或"Exit"。 为
了 增 加 这 个 功 能, 你 需 要 增 加 以 下 的 处 理 程 序:
public boolean handleEvent (Event e) { if (e.id == Event.WINDOW_DESTROY)
{ dispose(); System.exit(1); return true; } else { //Go ahead and do what
we normally would have done return super.handleEvent(e); } }
菜 单 图 形 界 面 依 靠 菜 单 来 指 导 用 户 操 作。 设 计 独 立 的
Java应 用 程 序 时,Java提 ?copy; 创 建 和 使 用 菜 单 的 直 接 方
法。 象 其 它 组 件 一 样,new将 创 建 一 个 菜 单:
Menu optionMenu; optionsMenu = new Menu("Options");
菜 单 项 一 ?copy; 你 创 建 了 一 个 菜 单, 你 可 以 使 用add()来 组
建 菜 单 项:
optionsMenu.add(new MenuItem("Option1"); optionsMenu.add(new
MenuItem("Option2");
菜 单 事 件 当 你 选 中 某 个 菜 单 项 时, 你 创 建 此 菜 单 项 的 字
符 ?reg; 将 在 事 件 中 返 回。 你 可 以 象 测 试 按 钮 选 择 一 样 测
试 菜 单 选 择:
public boolean action (Event e, Object arg) { ... if (e.target instanceof
MenuItem) { System.out.println((String) arg); } ... }
其 它 菜 单 项 除 了 上 面 描 述 的 简 单 菜 单 项 外, 你 还 可 增 加
CheckBox菜 单 项, 分 割 线, 以 及 子 菜 单。 下 面 是 一 ?copy; 例
子: Menu m,n; m = new Menu("Examples"); m.add(new MenuItem("Basic"));
m.add(new MenuItem("Simple"));
//add a separator m.add(new MenuItem("-"));
//add a Checkbox item m.add(new CheckboxMenuItem("Check"));
//add a submenu n = new Menu("More Examples"); n.add(new MenuItem("Sub
Basic")); n.add(new MenuItem("Sub Simple")); m.add(n);
菜 单 条 你 创 建 好 菜 单 后, 你 应 将 ?reg; 放 在 应 用 程 序 的 菜
单 条 上: mb = new Menubar();
mb.add(m); mb.add(optionsMenu);
然 后 你 可 为applet设 置 菜 单 条: setMenuBar(mb);
4.5 独 立 应 用 程 序 例 子
为 了 看 一 个 更 复 杂 的 独 立 的 图 形 界 面 应 用 程 序, 下 面 有
一 个 数 字 转 换 的 例 子:
import java.awt.*;
public class d2x extends Frame { int decimalValue= 0; String baseXValue
= new String ("0"); TextField dDisplay,xDisplay;
//d2x constructor public d2x() { super("Decimal Converter");//set the
title of the frame MenuBar mb = new MenuBar(); Button d2Binary = new
Button("Binary"); Button d2Octal = new Button("Octal"); Button d2Hex =
new Button("Hex"); Button d2Base36 = new Button("Base36"); Panel p1 = new
Panel(); Panel p2 = new Panel(); Panel p3 = new Panel();
//add a simple menu Menu m = new Menu("Application"); m.add(new
CheckboxMenuItem("Base 36 Active"); m.add(new MenuItem("Exit"));
//add menu to menubar mb.add(m); setMenuBar(mb);//install this menu bar
in the frame
//Add buttons to their own panel p3.setLayout(new FlowLayout());
p3.add(d2Binary); p3.add(d2Octal); p3.add(d2Hex); p3.add(d2Base36);
//Add text fields Label dLabel = new Label("Enter Deecimal: "); Label
xLabel = new Label("Converted Value: "); dDisplay = new
TextField(integer.toString(decimalValue),7); xDisplay = new
TextField(baseXValue,32); xDisplay.setEditable(false);
p1.setLayout(new FlowLayout(FlowLayout.LEFT)); p2.setLayout(new
FlowLayout(FlowLayout.LEFT)); p1.add(dLabel); p1.add(dDisplay);
p2.add(xLabel); p2.add(xDisplay);
//Add the panels add("North",p1); add("Center",p2);
add("South",p3); }//end d2x constructor
public void start() { resize(400,150); show(); }
public void updateXDisplay() { xDisplay.setText(baseXValue); }
public boolean handleEvent(Event evt) { if (evt.targt intanceof MenuItem)
{ if ("Exit".equals(((MenuItem)evt.target).getLabel())) { hide();
dispose(); System.exit(0); return false; } retrun true; } else if
(evt.target instanceof Button) { String whick =
((Button)evt.target).getLabel(); if (whick.equals("Binary"))
{ decimalValue = Integer.parseInt(dDisplay.getText()); baseXValue =
Interger.toString(decimalValue,2); } if (whick.equals("Octal"))
{ decimalValue = Integer.parseInt(dDisplay.getText()); baseXValue =
Interger.toString(decimalValue,8); } if (whick.equals("Hex"))
{ decimalValue = Integer.parseInt(dDisplay.getText()); baseXValue =
Interger.toString(decimalValue,16); } if (whick.equals("36"))
{ decimalValue = Integer.parseInt(dDisplay.getText()); baseXValue =
Interger.toString(decimalValue,36); } updateXDisplay(); return true; }
return false; }
public static void main(String args[]) { d2x m = new d2x(); m.start(); } }
本 章 小 结:
1.java有 两 种 类 型 的 应 用 程 序, 一 种 是 直 接 运 行 在java虚
拟 机 上, 用java命 令 执 行; 另 一 种 运 行 在 浏 览 器 里, 由 浏 览
器 调 用 执 行, 一 般 称 它 为Applet小 程 序。 本 书 主 要 讨 论 第
一 种 应 用 程 序。 2.java应 用 程 序 是 由 类 组 成 的, 而 且 用java
命 令 行 执 行 的 类 必 须 有main入 口 函 数。 3.与C语 言 相 似,java
程 序 也 可 由 命 令 行 传 递 给main函 数 参 数。 4.基 本 窗 口java
程 序 的 基 本 类 是Frame。 利 用 它 可 以 很 方 便 地 建 立 图 形 用
户 界 面 程 序。
</pre></div></td></tr></table><hr width=90% color=#7A7A71><!--end_content--> <br> </TD> <TD bgColor=#c6bba4 vAlign=top width="1%"></TD> <TD bgColor=#c6bba4 vAlign=bottom width="11%"><b><a href="/index.html">回首页</a><br><br><a href='3.html'>上一页</a><br><br><a href='5.html'>下一页</a><br><br><a href='http://pub.goldnets.com:81/bbs/post.php?job=new&topic=12210' target=_blank> 我有话说 </a><br><br><a href='http://pub.goldnets.com:81/bbs/bbslist.php?topic=12210' target=_blank> 评论一览 </a></center><br><!--title_end1--></b><br></TD> </TR></TABLE><TABLE background=images/bj.jpg border=0 cellSpacing=0 width="100%"> <TR> <TD bgColor=#c6bba4 vAlign=top width="12%"> </TD> <TD background=/images/bj.jpg vAlign=top width="76%"> <br> <center> <iframe width=468 height=60 marginwidth=0 marginheight=0 hspace=0 vspace=0 frameborder=0 scrolling=no bordercolor="#000000" src="/banner4.html"></iframe> </center> <center> <script language="JavaScript" src="http://www.myrice.com/bottom.js"></script> </center> </TD> <TD bgColor=#c6bba4 vAlign=top width="12%" align="left"></TD> </TR></TABLE><center> <script language="JavaScript" src="/bottom.js"></script></center></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -