这里是用java写的一个计算器,用appllet的方式在浏览器中运行,如果电脑上装有java运行环境jre就能一试。将html代码保存为*.html(名称能够自定),applettest编译为class文件放在同一文件夹下就能运行了。下面给出代码

applettest.html:

<html>
<head>
    <title>CalculatorApplet</title>
    </head>
    <body>
    <h1>CalculatorApplet</h1>
    <h2>by:Carp_and_Wind</h2>
    <applet code="applettest.class" width="400" height="400">
    if your browser support java you would see javaapplet here.
    </applet>
    <br />
    <a href="http://blog.csdn.net/Carp_and_Wind">My blog here to see the source code.</a> 
    </body>
</html>

applettest.java:

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

public class applettest extends JApplet 

{

/**


* @param args


*/


public void init() {


EventQueue.invokeLater(new Runnable(){


public void run()


{


CalculatorPanel panel = new CalculatorPanel();//加入组件


     add(panel);


}


});


}

}

/**

 * A panel with calculator buttons and a result display.

 */

class CalculatorPanel extends JPanel//这个组建当中还能嵌套别的

{

   public CalculatorPanel()

   {

      setLayout(new BorderLayout());

result = 0;

      lastCommand = "=";

      start = true;//初始化初始显示

// add the display

display = new JButton("0");

      clear=new JButton("Clear");

      display.setEnabled(false);

      add(display, BorderLayout.NORTH);

      ActionListener clearall = new ClearAction();

      clear.addActionListener(clearall);

      add(clear,BorderLayout.SOUTH);

      ActionListener insert = new InsertAction();

      ActionListener command = new CommandAction();

      

      // add the buttons in a 4 x 4 grid

panel = new JPanel();

      panel.setLayout(new GridLayout(4, 4));

addButton("7", insert);//注意addbutton为自定义方法

      addButton("8", insert);

      addButton("9", insert);

      addButton("/", command);

addButton("4", insert);

      addButton("5", insert);

      addButton("6", insert);

      addButton("*", command);

addButton("1", insert);

      addButton("2", insert);

      addButton("3", insert);

      addButton("-", command);

addButton("0", insert);

      addButton(".", insert);

      addButton("=", command);

      addButton("+", command);

add(panel, BorderLayout.CENTER);

   }

/**

    * Adds a button to the center panel.

    * @param label the button label

    * @param listener the button listener

    */

   private void addButton(String label, ActionListener listener)

   {

      JButton button = new JButton(label);

      button.addActionListener(listener);

      panel.add(button);

   }

/**

    * This action inserts the button action string to the end of the display text.

    */

   private class ClearAction implements ActionListener

   {


  public void actionPerformed(ActionEvent event)


  {


  start=true;


  display.setText("0");


  result = 0;


  lastCommand = "=";


  }

   }

   private class InsertAction implements ActionListener

   {

      public void actionPerformed(ActionEvent event)//event系统提供

      {

         String input = event.getActionCommand();

         if (start)//why use start ?

         {

            display.setText("");//大概是初始化需要吧

            start = false;

         }

         display.setText(display.getText() + input);

      }

   }

/**

    * This action executes the command that the button action string denotes.

    */

   private class CommandAction implements ActionListener

   {

      public void actionPerformed(ActionEvent event)

      {

         String command = event.getActionCommand();

if (start)//start什么用途?原来是用来表示第一计算顺序,这尼玛。。。够费心的!

         {

            if (command.equals("-"))

            {

               display.setText(command);

               start = false;

            }

            else lastCommand = command;

         }

         else

         {

            calculate(Double.parseDouble(display.getText()));

            lastCommand = command;

            start = true;

         }

      }

   }

/**

    * Carries out the pending calculation.

    * @param x the value to be accumulated with the prior result.

    */

   public void calculate(double x)

   {

      if (lastCommand.equals("+")) result += x;

      else if (lastCommand.equals("-")) result -= x;

      else if (lastCommand.equals("*")) result *= x;

      else if (lastCommand.equals("/")) result /= x;

      else if (lastCommand.equals("=")) result = x;

      display.setText("" + result);

   }

   private JButton clear;

   private JButton display;

   private JPanel panel;

   private double result;

   private String lastCommand;

   private boolean start;

}

java applet初探之计算器的更多相关文章

  1. java sound初探

    网上关于java sound的正规资源讲解的非常好,本文不再给出示例,主要提供一些好的资源,并说说我的一些理解,用于形成对java sound的整体认识. 一.几个词汇 TTS:text-to-spe ...

  2. Java—Applet

    1  Applet的定义 Applet是Java语言编写的,无法独立运行,但可以嵌入到网页中执行.它扩展了传统的编程结构和方法,可以通过互联网发布到任何具有Java编译环境浏览器的个体计算机上. 如下 ...

  3. The differences between Java application and Java applet

    在Java语言中,能够独立运行的程序称为Java应用程序(Application).Java语言还有另外一种程序--Applet程序.Applet程序(也称Java小程序)是运行于各种网页文件中,用于 ...

  4. Java Applet与Java Application的区别

    转自:http://www.educity.cn/java/500609.html 在Java语言中,能够独立运行的程序称为Java应用程序(Application).Java语言还有另外一种程序-- ...

  5. Java Applet使用

    问题描述:       Java Applet使用   参考资料:      http://docs.oracle.com/javase/tutorial/deployment/applet/depl ...

  6. Java Applet与Java Application的特点

    java application是应用程序,用于桌面开发,java applet是小应用程序,一般嵌入到网页里运行.applet一般用于B/S页面上作为插件式的开发,而application主要是桌面 ...

  7. 在浏览器运行 java applet时遇到的一些问题及其解决方法

    运行 java applet时提示:您的安全设置已阻止本地应用程序运行,如何解决?如下图所示 这时候通过设置java的安全级别就可以了. 控制面板->程序->Java->安全 将安全 ...

  8. 使用Java Applet在客户端解压缩,以及使用证书的意义

    以前解压缩是用Java Applet在客户端解压缩,而且用户不知道这回事.但是现在Chrome不支持NP API了,所以不得不把Java去掉,然后在服务器里解压缩.风险在于,解压缩以后,传输到客户端的 ...

  9. Java Applet实现五子棋游戏

    从谷歌的AlphaGo到腾讯的绝艺,从人脸识别到无人驾驶,从谷歌眼镜到VR的兴起,人工智能领域在不断的向前迈进,也在不断深入的探索.但背后错综复杂的技术和利益成本也是很多企业亟待解决的难题.对于人工智 ...

随机推荐

  1. Windows系统服务的编写。

    实验资源下载地址:点击打开链接 只是不知道能不能从服务向桌面进程传递消息,,就像两个桌面进程之间用Sendmessage似的..希望有知道的大神可以指点一下..不胜感激.. 因为微软在Vista之后, ...

  2. Windows下结束tomcat进程,dos命令

    Microsoft Windows [版本 6.1.7601]版权所有 (c) 2009 Microsoft Corporation.保留所有权利. C:\Users\Administrator> ...

  3. AngularJS html5Mode与ASP.NET MVC路由

    AngularJS html5Mode与ASP.NET MVC路由共存 前言 很久之前便听说AngularJS,非常酷,最近也比较火,我也在持续关注这个技术,只是没有认真投入学习.前不久公司找我们部门 ...

  4. Appium Android Bootstrap源码分析之启动运行

    通过前面的两篇文章<Appium Android Bootstrap源码分析之控件AndroidElement>和<Appium Android Bootstrap源码分析之命令解析 ...

  5. AppiumDriver升级到2.0.0版本引发的问题--Cannot instantiate the type AppiumDriver

    1. 问题描述和起因 在使用Appium1.7.0及其以下版本的时候,我们可以直接使用如下代码来创建一个AppiumDriver实例进行对安卓设备的操作. driver = new AndroidDr ...

  6. CSS学习笔记:文本换行显示(word-wrap)

    在CSS3中新定义了文本换行属性,word-wrap: nomal属性值表示控制连续文本换行. break-word属性值表示内容将在边界内换行.如果需要,词内换行(word-break)也会发生. ...

  7. Error with mysqld_safe

    出处:http://bugs.mysql.com/bug.php?id=18403 Description: - I downloaded the binary file “Standard 5.0. ...

  8. UVA10537 Toll! Revisited

    difkstra + 路径输出 The Toll! Revisited Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld & ...

  9. 负载均衡DNS和反向代理优缺点

    负载均衡 (Load Balancing) 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用性. 负载均衡(又 ...

  10. 【jar包】图片的异步加载--【 Imageloader】

    Android Imageloader图片异步加载 Imageloader是一个在android平台下简单的下载.显示.缓存空间的图片加载库. 异步下载网络图片并可以在UI线程更新View,使用二级缓 ...