《java小应用程序(Applet)和java应用程序(Application)分别编写的简单计算器》

Application和Java Applet的区别。Java语言是一种半编译半解释的语言。Java的用户程序分为两类:Java Application和Java Applet。这两类程序在组成结构和执行机制上都有一定的差异,主要体现在以下几方面:(1)运行方式不同。Java Application是完整的程序,可以独立运行;Java Applet程序不能单独运行,    它必须嵌入到用HTML语言编写的Web页面中,通过与Java兼容的浏览器来控制执行。(2)运行工具不同。Java Application程序被编译以后,用普通的Java解释器就可以使其边解释边执行,    而Java Applet必须通过网络浏览器或者Applet观察器才能执行。(3)程序结构不同。每个Java Application程序必定含有一个并且只有一个main方法,程序执行时    首先寻找main方法,并以此为入口点开始运行。含有main方法的那个类,常被称为主类,也就是说    Java Application程序都含有一个主类。而Applet程序则没有含main方法的主类,这也正是Applet程序不能独立运行的原因。    尽管Applet没有含main方法的主类,但Applet一定有一个从 java.applet.Applet派生的类,它是由Java系统提供的。(4)受到的限制不同Java Application程序可以设计成能进行各种操作的程序,包括读/写文件的操作    但是 Java Applet 对站点的磁盘文件既不能进行读操作,也不能进行写 操作。然而,由于Applet的引入    使Web页面具有动态多媒体效果和可交互性能,这使由名为超文本、实为纯文本的HTML语言编写成的Web页面真正具有了超文本功能    不但可以显示文本信息,而且还可以有各种图片效果和动态图形效果,从而使页面显得生动美丽;另外,Applet使Web页面增加了按钮等功能,从而增加了交互性。

 1 //用Java小应用程序(Applet)编写一个简单的计算器。(Java语言程序设计教程 第二版 第173页 习题)
 2
 3 import java.applet.Applet;
 4 import java.awt.TextField;
 5 import java.awt.Checkbox;
 6 import java.awt.CheckboxGroup;
 7 import java.awt.Button;
 8 import java.awt.event.ItemEvent;
 9 import java.awt.event.ActionEvent;
10 import java.awt.event.ActionListener;
11 import java.awt.event.ItemListener;
12
13 public class Test1 extends Applet implements ActionListener,ItemListener
14 {
15     int n = 0;
16     TextField tf1 = new TextField(5);
17     Checkbox[] c = new Checkbox[4];
18     CheckboxGroup cg = new CheckboxGroup();
19     TextField tf2 = new TextField(5);
20     Button bt = new Button("等于");
21     TextField tf3 = new TextField(10);
22     String[] str = {"+","-","*","/"};
23
24     public void init(){
25         this.add(tf1);
26         for(int i=0;i<str.length;i++){
27             c[i] = new Checkbox(str[i],false,cg);
28             this.add(c[i]);
29         }
30         this.add(tf2);
31         this.add(bt);
32         this.add(tf3);
33         tf3.setEditable(false);
34
35         bt.addActionListener(this);
36         for(int i=0;i<str.length;i++){
37             c[i].addItemListener(this);
38         }
39     }
40
41     public void itemStateChanged(ItemEvent e){
42         String s = (String)e.getItem();
43         for(int i=0;i<str.length;i++){
44             if(s == str[i]){
45                 n = i;
46                 }
47             }
48         }
49     public void actionPerformed(ActionEvent e){
50         if(e.getSource() == bt){
51             switch(n){
52                 case 0:
53                     tf3.setText((Double.parseDouble(tf1.getText())) + (Double.parseDouble(tf2.getText()))+"");
54                     break;
55                 case 1:
56                     tf3.setText((Double.parseDouble(tf1.getText()))-(Double.parseDouble(tf2.getText()))+"");
57                     break;
58                 case 2:
59                     tf3.setText((Double.parseDouble(tf1.getText()))*(Double.parseDouble(tf2.getText()))+"");
60                     break;
61                 case 3:
62                     tf3.setText((Double.parseDouble(tf1.getText()))/(Double.parseDouble(tf2.getText()))+"");
63                     break;
64             }
65         }
66     }
67 }
68
69 //<applet code = Test1.class width = 400 height = 100></applet>

  1 //用Java应用程序(Application)编写一个简单的计算器。(Java语言程序设计教程 第二版 第173页 习题)
  2 //这个应用程序还可以添加菜单,以后慢慢添加完善.
  3 package myclass;
  4
  5 import java.awt.Frame;
  6 import java.awt.TextField;
  7 import java.awt.Checkbox;
  8 import java.awt.CheckboxGroup;
  9 import java.awt.Button;
 10 import java.awt.event.ActionListener;
 11 import java.awt.event.ActionEvent;
 12 import java.awt.event.ItemListener;
 13 import java.awt.event.ItemEvent;
 14 import java.awt.event.WindowAdapter;
 15 import java.awt.event.WindowEvent;
 16 import java.awt.FlowLayout;
 17
 18 public class Test2
 19 {
 20     int n = 0;//定义一个全局变量。
 21     private Frame f;
 22     private TextField tf1;
 23     private Checkbox[] c;
 24     private CheckboxGroup cg;
 25     private TextField tf2;
 26     private Button bt;
 27     private TextField tf3;
 28     String[] str = {"+","-","*","/"};
 29
 30     public Test2(){
 31         init();
 32         addEvents();
 33     }
 34
 35     public void init(){
 36         f = new Frame("计算器");
 37         f.setLayout(new FlowLayout());
 38         //f.setBounds(600,100,400,200);
 39         tf1 = new TextField(5);
 40         f.add(tf1);
 41         c = new Checkbox[4];
 42         for(int i=0;i<str.length;i++){
 43             c[i] = new Checkbox(str[i],false,cg);
 44                 f.add(c[i]);
 45         }
 46         tf2 = new TextField(5);
 47         f.add(tf2);
 48         bt = new Button("等于");
 49         f.add(bt);
 50         tf3 = new TextField(10);
 51         f.add(tf3);
 52         tf3.setEditable(false);
 53         f.pack();
 54         f.setVisible(true);
 55     }
 56
 57     public void addEvents(){
 58
 59         f.addWindowListener(new WindowAdapter(){
 60             public void windowClosing(WindowEvent e){
 61                 System.exit(0);
 62             }
 63         });
 64
 65
 66         //为复选框组件添加事件监听器.
 67         for(int i=0;i<str.length;i++){
 68             c[i].addItemListener(new ItemListener(){
 69                 public void itemStateChanged(ItemEvent e){
 70                     String st = (String)e.getItem();
 71                     for(int i=0;i<str.length;i++){
 72                         if(st == str[i])
 73                             n = i;
 74                     }
 75                 }
 76             });
 77         }
 78
 79         //为按钮天剑事件监听器.
 80         bt.addActionListener(new ActionListener(){
 81             public void actionPerformed(ActionEvent e){
 82                 if(e.getSource() == bt){
 83                     switch(n){
 84                         case 0:
 85                             tf3.setText((Double.parseDouble(tf1.getText())) + (Double.parseDouble(tf2.getText())) + "");
 86                             break;
 87                         case 1:
 88                             tf3.setText((Double.parseDouble(tf1.getText()))-(Double.parseDouble(tf2.getText()))+"");
 89                             break;
 90                         case 2:
 91                             tf3.setText((Double.parseDouble(tf1.getText()))*(Double.parseDouble(tf2.getText()))+"");
 92                             break;
 93                         case 3:
 94                             tf3.setText((Double.parseDouble(tf1.getText()))/(Double.parseDouble(tf2.getText()))+"");
 95                             break;
 96                     }
 97                 }
 98             }
 99         });
100     }
101     public static void main(String[] args)
102     {
103         new Test2();
104     }
105 }

Application和Java Applet的区别。
Java语言是一种半编译半解释的语言。Java的用户程序分为两类:Java Application和Java Applet。
这两类程序在组成结构和执行机制上都有一定的差异,主要体现在以下几方面:
(1)运行方式不同。Java Application是完整的程序,可以独立运行;Java Applet程序不能单独运行,
它必须嵌入到用HTML语言编写的Web页面中,通过与Java兼容的浏览器来控制执行。
(2)运行工具不同。Java Application程序被编译以后,用普通的Java解释器就可以使其边解释边执行,
而Java Applet必须通过网络浏览器或者Applet观察器才能执行。
(3)程序结构不同。每个Java Application程序必定含有一个并且只有一个main方法,程序执行时
首先寻找main方法,并以此为入口点开始运行。含有main方法的那个类,常被称为主类,也就是说
Java Application程序都含有一个主类。而Applet程序则没有含main方法的主类,这也正是Applet程序不能独立运行的原因。
尽管Applet没有含main方法的主类,但Applet一定有一个从 java.applet.Applet派生的类,它是由Java系统提供的。
(4)受到的限制不同Java Application程序可以设计成能进行各种操作的程序,包括读/写文件的操作
但是 Java Applet 对站点的磁盘文件既不能进行读操作,也不能进行写 操作。然而,由于Applet的引入
使Web页面具有动态多媒体效果和可交互性能,这使由名为超文本、实为纯文本的HTML语言编写成的Web页面真正具有了超文本功能
不但可以显示文本信息,而且还可以有各种图片效果和动态图形效果,从而使页面显得生动美丽;另外,Applet使Web页面增加了按钮等功能,从而增加了交互性。

时间: 2024-10-12 17:29:49

《java小应用程序(Applet)和java应用程序(Application)分别编写的简单计算器》的相关文章

CI框架源码阅读笔记3 全局函数Common.php

从本篇开始,将深入CI框架的内部,一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap引导文件都会最先引入全局函数,以便于之后的处理工作). 打开Common.php中,第一行代码就非常诡异: if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 上一篇(CI框架源码阅读笔记2 一切的入口 index

IOS测试框架之:athrun的InstrumentDriver源码阅读笔记

athrun的InstrumentDriver源码阅读笔记 作者:唯一 athrun是淘宝的开源测试项目,InstrumentDriver是ios端的实现,之前在公司项目中用过这个框架,没有深入了解,现在回来记录下. 官方介绍:http://code.taobao.org/p/athrun/wiki/instrumentDriver/ 优点:这个框架是对UIAutomation的java实现,在代码提示.用例维护方面比UIAutomation强多了,借junit4的光,我们可以通过junit4的

Yii源码阅读笔记 - 日志组件

?使用 Yii框架为开发者提供两个静态方法进行日志记录: Yii::log($message, $level, $category);Yii::trace($message, $category); 两者的区别在于后者依赖于应用开启调试模式,即定义常量YII_DEBUG: defined('YII_DEBUG') or define('YII_DEBUG', true); Yii::log方法的调用需要指定message的level和category.category是格式为“xxx.yyy.z

源码阅读笔记 - 1 MSVC2015中的std::sort

大约寒假开始的时候我就已经把std::sort的源码阅读完毕并理解其中的做法了,到了寒假结尾,姑且把它写出来 这是我的第一篇源码阅读笔记,以后会发更多的,包括算法和库实现,源码会按照我自己的代码风格格式化,去掉或者展开用于条件编译或者debug检查的宏,依重要程度重新排序函数,但是不会改变命名方式(虽然MSVC的STL命名实在是我不能接受的那种),对于代码块的解释会在代码块前(上面)用注释标明. template<class _RanIt, class _Diff, class _Pr> in

CI框架源码阅读笔记5 基准测试 BenchMark.php

上一篇博客(CI框架源码阅读笔记4 引导文件CodeIgniter.php)中,我们已经看到:CI中核心流程的核心功能都是由不同的组件来完成的.这些组件类似于一个一个单独的模块,不同的模块完成不同的功能,各模块之间可以相互调用,共同构成了CI的核心骨架. 从本篇开始,将进一步去分析各组件的实现细节,深入CI核心的黑盒内部(研究之后,其实就应该是白盒了,仅仅对于应用来说,它应该算是黑盒),从而更好的去认识.把握这个框架. 按照惯例,在开始之前,我们贴上CI中不完全的核心组件图: 由于BenchMa

CI框架源码阅读笔记2 一切的入口 index.php

上一节(CI框架源码阅读笔记1 - 环境准备.基本术语和框架流程)中,我们提到了CI框架的基本流程,这里这次贴出流程图,以备参考: 作为CI框架的入口文件,源码阅读,自然由此开始.在源码阅读的过程中,我们并不会逐行进行解释,而只解释核心的功能和实现. 1.       设置应用程序环境 define('ENVIRONMENT', 'development'); 这里的development可以是任何你喜欢的环境名称(比如dev,再如test),相对应的,你要在下面的switch case代码块中

Apache Storm源码阅读笔记

欢迎转载,转载请注明出处. 楔子 自从建了Spark交流的QQ群之后,热情加入的同学不少,大家不仅对Spark很热衷对于Storm也是充满好奇.大家都提到一个问题就是有关storm内部实现机理的资料比较少,理解起来非常费劲. 尽管自己也陆续对storm的源码走读发表了一些博文,当时写的时候比较匆忙,有时候衔接的不是太好,此番做了一些整理,主要是针对TridentTopology部分,修改过的内容采用pdf格式发布,方便打印. 文章中有些内容的理解得益于徐明明和fxjwind两位的指点,非常感谢.

CI框架源码阅读笔记4 引导文件CodeIgniter.php

到了这里,终于进入CI框架的核心了.既然是"引导"文件,那么就是对用户的请求.参数等做相应的导向,让用户请求和数据流按照正确的线路各就各位.例如,用户的请求url: http://you.host.com/usr/reg 经过引导文件,实际上会交给Application中的UsrController控制器的reg方法去处理. 这之中,CodeIgniter.php做了哪些工作?我们一步步来看. 1.    导入预定义常量.框架环境初始化 之前的一篇博客(CI框架源码阅读笔记2 一切的入

jdk源码阅读笔记之java集合框架(二)(ArrayList)

关于ArrayList的分析,会从且仅从其添加(add)与删除(remove)方法入手. ArrayList类定义: p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Monaco } span.s1 { color: #931a68 } public class ArrayList<E> extends AbstractList<E> implements List<E> ArrayList基本属性: /** *

dubbo源码阅读笔记--服务调用时序

上接dubbo源码阅读笔记--暴露服务时序,继续梳理服务调用时序,下图右面红线流程. 整理了调用时序图 分为3步,connect,decode,invoke. 连接 AllChannelHandler.connected(Channel) line: 38 HeartbeatHandler.connected(Channel) line: 47 MultiMessageHandler(AbstractChannelHandlerDelegate).connected(Channel) line: