⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yyrm4.html

📁 关于java学习的一些基本知识!
💻 HTML
📖 第 1 页 / 共 2 页
字号:
            <P>Java语 言 很 类 似C和C++语 言。 在C语 言 里, 通 过 在 命 令 行 输入 参 数,C程 序 可 由main函 
            数 读 入 这 ?copy; 参 数,java程 序 也 一样, 请 看 下 面 程 序: Filename:2.java </P>
            <P>class My2 { public static void main (String args[ ] ) { int arc = 
            args.length; if (arc&gt;0) { for (int i =0;i&lt;arc;i++) 
            System.out.println (args[i] ) } else { System.out.println 
            ("Application have no args!"); } } } </P>
            <P>编 译:javac 2.java 将 在 本 目 录 下 生 成My2.class文 件。 </P>
            <P>运 行:java My2 输 出: Application have no args! </P>
            <P>运 行:java My2 arg1 arg2 arg3 输 出: arg1 arg2 arg3 这 说 明,java里参 数 的 
            传 递 是 这 样 的, 命 令 行 里 类 名 后 第 一 个 参 数 放 在args[0]里,第 二 个 参 数 放 
            在args[1]里, 以 此 类 推。 </P>
            <H2 align=center>4.4 建 立 窗 口Java程 序 基 本 框 架 </H2>
            <P>Frame介 绍 在Java语 言 里,Frame类 的 功 能 是 创 建 图 形 用 户 界面(GUI)的 基 本 窗 口。 
            在 典 型 浏 览 器 里, Frame类 是 显 示GUI的 父类。 </P>
            <P>类 的 层 次 结 构 如 下: java.lang.Object java.awt.Component 
            java.awt.Container java.awt.Window java.awt.Frame </P>
            <P>Frame是 从 没 有 边 框 和 菜 单 条 的 空 白 窗 口 ?copy; 充 来 的。这 种 窗 口 主 要 用 在 弹 
            出 式 窗 口 方 式 下。 Frame给 窗 口 一 个 边框, 一 个 布 局 和 一 个 窗 口 条。 </P>
            <P>你 可 以 通 过 创 建 自 己 的 多 个Frame来 创 建 图 形 用 户 界 面 的应 用 程 序。 我 们 已 知 道 
            怎 样 建 立 独 立 的java应 用 程 序, 那 么怎 样 将 各 种 迷 人 的 图 形 结 合 在 一 块 呢? 我 们 通 
            过 建 立 一个Frame来 实 现 这 个 功 能。Frame让 我 们 访 问 窗 口, 和applet工 作区 有 许 多 相 同 
            的 地 方。 下 面 是 一 个 小 的 应 用 程 序, 它 弹 出一 个 框 架 并 且 在 框 架 里 显 示 信 息。(信 息 
            可 以 是 命 令 行 参数, 也 可 以 是 缺 省 的 信 息?copy;。 如 果 你 在 窗 口 里 点 一 下,程 序 退 
            出。 </P>
            <P>基 本 框 架 程 序 import java.awt.*; </P>
            <P>/* * Memo.java *A simple stand-alone graphical application */ 
</P>
            <P>public class Memo extends Frame { publc String motd; </P>
            <P>public Memo(String s) { //set our title super("Memo Frame"); </P>
            <P>motd = s; resize(300,300); } </P>
            <P>public Memo() { this("This is a Memo"); } </P>
            <P>public void paint(Graphics g) { g.drawString(motd,15,15); 
            g.drawString("Click anywhere to Exit",15,25); } </P>
            <P>public void start() { show(); } </P>
            <P>public boolean mouseDown(Event e,int x,int y) { //hide the window 
            hide(); //free up system resources dispose(); //Quit the app. 
            System.exit(0); return false; } </P>
            <P>public static void main(String args[]) { Memo m; if (args.length 
            &gt; ) { m = new Memo(args[0]); } else { m = new Memo(); } 
            m.start(); } } </P>
            <P>将Frame联 系 起 来 l 熟 悉 的 函 数 paint()和mouseDown(), 看 起 来有 点 眼 熟。 这 
            ?copy; 函 数 与applet的 函 数 一 样。 实 际 上, 一 个frame 包 含 各 种GUI组 件 与applet的 
            形 式 一 样。 另 一 个 熟 悉 的 函 数 是start()。这 个 函 数 并 不 必 要, 因 为 我 们 没 有 覆 盖 任 
            何 已 存 在 的 函数。 但 你 想 继 承applet编 程 的 风 格, 你 还 是 可 以 使 
            用start(),stop(),init()与destroy()等函 数。 </P>
            <P>l 新 函 数 我 们 熟 悉 的 函 数start()调 用 了show()。show()函 数 是Window类的 继 承, 
            它 显 示Fame及 其 所 有 组 件。 在mouseDown()函 数 里 我 们看 到 两 个 函 
            数:hide()和dispose()。hide()只 简 单 地 使Frame不 可 见。你 可 以 在 任 何 时 候 调 用 它 来 
            隐 藏 窗 口。 dispose()函 数 释 放由Frame占 有 的 系 统 资 源。 只 有 在 你 不 需 要Frame时 才 
            调 用 它。 </P>
            <P>l 构 造 函 数 Memo例 子 还 包 含 了 一 个 新 函 数Memo()。 其 实 这个 类 有 两 个Memo()函 
            数! 任 何 与 类 名 相 同 的 函 数 都 是 构 造 函数。 它 在 创 建 一 个 新 对 象 时 被 调 用。 你 可 以 
            认 为 它 是 一 个对 象 的init()初 始 化 函 数。 为 什 么 需 要 两 个 构 造 函 数 呢? 有了 两 个 构 造 
            函 数, 我 们 可 以 利 用 多 态 性 的 优 点, 有 两 种 方法 创 建 一 个 新Memo对 象。 我 们 可 以 简 单 
            的 创 建 使 用 缺 省 信息 的Memo对 象: m = new Memo(); 或 者, 我 们 可 以 自 己 提 ?copy; 
            信息: m = new Memo("Our message"); </P>
            <P>Frame控 制 本 程 序 的 最 后 功 能 是 在main()里 建 立 并 显 示frame。它 由 以 下 两 步 实 
            现: //Step 1 m = new Memo(); </P>
            <P>//Step 2 m.start(); 第 一 步 初 始 化memo对 象。 我 们 象 操 作 其 它对 象 一 样 操 
            作m。 为 显 示frame, 我 们 需 要 调 用 show()。 这 在 第二 步 里 实 现。 另 一 个 要 注 意 的 是 
            程 序 的健 壮 性: 我 们 基 本的frame里 没 有 包 含 处 理 标 准 WINDOW_DESTROY消 息 的 函 数。 
            这 样,你 将 不 能 在 窗 口 的 控 制 菜 单 里 选 中"Quit"或"Exit"。为 了 增 加 这 个 功 能, 你 需 
            要 增 加 以 下 的 处 理 程 序: </P>
            <P>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); } } </P>
            <P>菜 单 图 形 界 面 依 靠 菜 单 来 指 导 用 户 操 作。 设 计 独 立 的Java应用 程 序 时,Java提 
            ?copy; 创 建 和 使 用 菜 单 的 直 接 方 法。 象 其它 组 件 一 样,new将 创 建 一 个 菜 单: </P>
            <P>Menu optionMenu; optionsMenu = new Menu("Options"); </P>
            <P>菜 单 项 一 ?copy; 你 创 建 了 一 个 菜 单, 你 可 以 使 用add()来组 建 菜 单 项: </P>
            <P>optionsMenu.add(new MenuItem("Option1"); optionsMenu.add(new 
            MenuItem("Option2"); </P>
            <P>菜 单 事 件 当 你 选 中 某 个 菜 单 项 时, 你 创 建 此 菜 单 项 的字 符 ?reg; 将 在 事 件 中 返 
            回。 你 可 以 象 测 试 按 钮 选 择 一 样测 试 菜 单 选 择: </P>
            <P>public boolean action (Event e, Object arg) { ... if (e.target 
            instanceof MenuItem) { System.out.println((String) arg); } ... } 
</P>
            <P>其 它 菜 单 项 除 了 上 面 描 述 的 简 单 菜 单 项 外, 你 还 可 增加CheckBox菜 单 项, 分 割 
            线, 以 及 子 菜 单。 下 面 是 一 ?copy; 例子: Menu m,n; m = new Menu("Examples"); 
            m.add(new MenuItem("Basic")); m.add(new MenuItem("Simple")); </P>
            <P>//add a separator m.add(new MenuItem("-")); </P>
            <P>//add a Checkbox item m.add(new CheckboxMenuItem("Check")); </P>
            <P>//add a submenu n = new Menu("More Examples"); n.add(new 
            MenuItem("Sub Basic")); n.add(new MenuItem("Sub Simple")); m.add(n); 
            </P>
            <P>菜 单 条 你 创 建 好 菜 单 后, 你 应 将 ?reg; 放 在 应 用 程 序 的菜 单 条 上: mb = new 
            Menubar(); </P>
            <P>mb.add(m); mb.add(optionsMenu); </P>
            <P>然 后 你 可 为applet设 置 菜 单 条: setMenuBar(mb); </P>
            <H2 align=center>4.5 独 立 应 用 程 序 例 子 </H2>
            <P>为 了 看 一 个 更 复 杂 的 独 立 的 图 形 界 面 应 用 程 序, 下 面有 一 个 数 字 转 换 的 例 子: 
            </P>
            <P>import java.awt.*; </P>
            <P>public class d2x extends Frame { int decimalValue= 0; String 
            baseXValue = new String ("0"); TextField dDisplay,xDisplay; </P>
            <P>//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(); </P>
            <P>//add a simple menu Menu m = new Menu("Application"); m.add(new 
            CheckboxMenuItem("Base 36 Active"); m.add(new MenuItem("Exit")); 
</P>
            <P>//add menu to menubar mb.add(m); setMenuBar(mb);//install this 
            menu bar in the frame </P>
            <P>//Add buttons to their own panel p3.setLayout(new FlowLayout()); 
            p3.add(d2Binary); p3.add(d2Octal); p3.add(d2Hex); p3.add(d2Base36); 
            </P>
            <P>//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); </P>
            <P>//Add the panels add("North",p1); add("Center",p2); 
            add("South",p3); }//end d2x constructor </P>
            <P>public void start() { resize(400,150); show(); } </P>
            <P>public void updateXDisplay() { xDisplay.setText(baseXValue); } 
            </P>
            <P>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; } </P>
            <P>public static void main(String args[]) { d2x m = new d2x(); 
            m.start(); } } </P>
            <P>输 出 结 构 如 图: </P>
            <H2 align=center>本 章 小 结:</H2>
            <P>1.java有 两 种 类 型 的 应 用 程 序, 一 种 是 直 接 运 行 在java虚拟 机 上, 用java命 令 执 
            行; 另 一 种 运 行 在 浏 览 器 里, 由 浏 览器 调 用 执 行, 一 般 称 它 为Applet小 程 序。 本 书 主 
            要 讨 论 第 一种 应 用 程 序。 2.java应 用 程 序 是 由 类 组 成 的, 而 且 用java命 令行 执 行 的 类 
            必 须 有main入 口 函 数。 3.与C语 言 相 似,java程 序 也可 由 命 令 行 传 递 给main函 数 参 数。 
            4.基 本 窗 口java程 序 的 基 本类 是Frame。 利 用 它 可 以 很 方 便 地 建 立 图 形 用 户 界 面 程 
            序。 </P></TD>
        <TR>
        <TR>
          <TD bgColor=#f0f0f0 borderColor=#ffffff class=t1 noWrap 
            width="50%"><IMG height=12 src="yyrm4.files/yellow_dot.gif" 
            width=12><A 
            href="http://www.chinajavaworld.net/doc/yyrm/yyrm3.html">上一章</A> </TD>
          <TD bgColor=#f0f0f0 borderColor=#ffffff class=t1 noWrap 
            width="50%"><IMG height=12 src="yyrm4.files/blue_dot.gif" 
            width=12><A 
            href="http://www.chinajavaworld.net/doc/yyrm/yyrm5.html">下一章</A> </TD>
        <TR></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><!--end first table --><!--  start foot -->
<SCRIPT src="yyrm4.files/foot1.js"></SCRIPT>

<SCRIPT src="yyrm4.files/adsindex.js"></SCRIPT>

<SCRIPT src="yyrm4.files/foot2.js"></SCRIPT>
<!--  end foot --></CENTER></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -