java实现图形化界面计算器

本文实例为大家分享了java实现图形化界面计算器的具体代码,供大家参考,具体内容如下

最终效果图:

项目流程:

第一步:实现图形化界面(添加计算器的 Button 和 用于显示输入数字、输出结果的JTextField等)

第二步:给按钮和文本框添加鼠标监听事件。

第三步:实现加减乘除、开方、平方、清零和退格功能。

开方运算:

平方运算:

加法运算:

减法运算:

乘法运算:

除法运算:

完整项目代码:

package First_App;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Caculator extends JFrame{
  /*
   * 图形化界面设计
   * */
  private static final long serialVersionUID = 4907149509182425824L;
  public Caculator(){
    Container c = getContentPane(); //定义一个顶级容器c
    setLayout(new GridLayout(2,1));//新建网格布局管理器,2行1列
    JTextField jtf = new JTextField("0",40);//构造一个用指定文本和列初始化的新文本框--jtf
      jtf.setHorizontalAlignment(JTextField.RIGHT);//设置水平对齐方式:居右对齐
    JButton data0 = new JButton("0");
    JButton data1 = new JButton("1");
    JButton data2 = new JButton("2");
    JButton data3 = new JButton("3");
    JButton data4 = new JButton("4");
    JButton data5 = new JButton("5");
    JButton data6 = new JButton("6");
    JButton data7 = new JButton("7");
    JButton data8 = new JButton("8");
    JButton data9 = new JButton("9");
    JButton point = new JButton(".");
    JButton equ = new JButton("=");
    JButton plus = new JButton("+");
    JButton minus = new JButton("-");
    JButton mtp = new JButton("*");
    JButton dvd = new JButton("/");
    JButton sqr = new JButton("sqrt");
    JButton root = new JButton("x^2");
    JButton tg = new JButton("退格");
    JButton ql = new JButton("清零");
    JPanel jp = new JPanel();  //新建JPanel面板--jp
    jp.setLayout(new GridLayout(4,5,5,5));//新建网格布局管理器(行数,列数,组件间的水平垂直间距)
    jp.add(data7);
    jp.add(data8);
    jp.add(data9);
    jp.add(plus);
    jp.add(sqr);
    jp.add(data4);
    jp.add(data5);
    jp.add(data6);
    jp.add(minus);
    jp.add(root);
    jp.add(data1);
    jp.add(data2);
    jp.add(data3);
    jp.add(mtp);
    jp.add(ql);
    jp.add(data0);
    jp.add(point);
    jp.add(equ);
    jp.add(dvd);
    jp.add(tg);
    c.add(jtf);//将文本框jtf添加到顶级容器c中
    c.add(jp);//将JPanel面板jp添加到顶级容器c中
    setSize(400,300);
    setTitle("计算器");
    setVisible(true);
    setResizable(false);//窗体大小由程序员决定,用户不能自由改变大小
    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    /*
     * *********************************************************
     *
          相关计算功能的实现
     * *********************************************************
     * */

    data0.addActionListener(new ActionListener(){//数字0的输入
      public void actionPerformed(ActionEvent arg0){
        if(jtf.getText().equals("0")){//将按钮值与0作比较
          jtf.requestFocus();//把输入焦点放在调用这个方法的控件上(即把光标放在文本框jtf里)
        }
        else{
          String str = jtf.getText();//取得当前按钮的按钮值
          jtf.setText(str+"0");  //将文本内容后加上字符0
        }
      }
    });
    data1.addActionListener(new ActionListener(){//数字1的输入
      public void actionPerformed(ActionEvent arg0){
        if(jtf.getText().equals("0")){//将按钮值与0作比较
          jtf.setText("");//将文本框初始化为空
          jtf.setText("1");//将文本框内容置为 1
          jtf.requestFocus();//把输入焦点放在调用这个方法的控件上(即把光标放在文本框jtf里)
        }
        else{
          String str = jtf.getText();//取得当前按钮的按钮值
          jtf.setText(str+"1");  //将文本内容后加上字符1
        }
      }
    });
    data2.addActionListener(new ActionListener(){
      public void actionPerformed(ActionEvent arg0){
        if(jtf.getText().equals("0")){
          jtf.setText("");
          jtf.setText("2");
          jtf.requestFocus();
        }
        else{
          String str = jtf.getText();
          jtf.setText(str+"2");
        }
      }
    });
    data3.addActionListener(new ActionListener(){
      public void actionPerformed(ActionEvent arg0){
        if(jtf.getText().equals("0")){
          jtf.setText("");
          jtf.setText("3");
          jtf.requestFocus();
        }
        else{
          String str = jtf.getText();
          jtf.setText(str+"3");
        }
      }
    });
    data4.addActionListener(new ActionListener(){
      public void actionPerformed(ActionEvent arg0){
        if(jtf.getText().equals("0")){
          jtf.setText("");
          jtf.setText("4");
          jtf.requestFocus();
        }
        else{
          String str = jtf.getText();
          jtf.setText(str+"4");
        }
      }
    });
    data5.addActionListener(new ActionListener(){
      public void actionPerformed(ActionEvent arg0){
        if(jtf.getText().equals("0")){
          jtf.setText("");
          jtf.setText("5");
          jtf.requestFocus();
        }
        else{
          String str = jtf.getText();
          jtf.setText(str+"5");
        }
      }
    });
    data6.addActionListener(new ActionListener(){
      public void actionPerformed(ActionEvent arg0){
        if(jtf.getText().equals("0")){
          jtf.setText("");
          jtf.setText("6");
          jtf.requestFocus();
        }
        else{
          String str = jtf.getText();
          jtf.setText(str+"6");
        }
      }
    });
    data7.addActionListener(new ActionListener(){
      public void actionPerformed(ActionEvent arg0){
        if(jtf.getText().equals("0")){
          jtf.setText("");
          jtf.setText("7");
          jtf.requestFocus();
        }
        else{
          String str = jtf.getText();
          jtf.setText(str+"7");
        }
      }
    });
    data8.addActionListener(new ActionListener(){
      public void actionPerformed(ActionEvent arg0){
        if(jtf.getText().equals("0")){
          jtf.setText("");
          jtf.setText("8");
          jtf.requestFocus();
        }
        else{
          String str = jtf.getText();
          jtf.setText(str+"8");
        }
      }
    });
    data9.addActionListener(new ActionListener(){
      public void actionPerformed(ActionEvent arg0){
        if(jtf.getText().equals("0")){
          jtf.setText("");
          jtf.setText("9");
          jtf.requestFocus();
        }
        else{
          String str = jtf.getText();
          jtf.setText(str+"9");
        }
      }
    });
    point.addActionListener(new ActionListener(){  //点号的输入
      public void actionPerformed(ActionEvent arg0){
        if(jtf.getText().equals("0")){
          jtf.setText("");
          jtf.setText(".");
          jtf.requestFocus();
        }
        else{
          String str = jtf.getText();
          jtf.setText(str+".");
        }
      }
    });
    plus.addActionListener(new ActionListener(){  //+号的输入
      public void actionPerformed(ActionEvent arg0){
        if(jtf.getText().equals("0")){
          jtf.setText("");
          jtf.setText("+");
          jtf.requestFocus();
        }
        else{
          String str = jtf.getText();
          jtf.setText(str+"+");
        }
      }
    });
    minus.addActionListener(new ActionListener(){  //-号的输入
      public void actionPerformed(ActionEvent arg0){
        if(jtf.getText().equals("0")){
          jtf.setText("");
          jtf.setText("-");
          jtf.requestFocus();
        }
        else{
          String str = jtf.getText();
          jtf.setText(str+"-");
        }
      }
    });
    mtp.addActionListener(new ActionListener(){  //*号的输入
      public void actionPerformed(ActionEvent arg0){
        if(jtf.getText().equals("0")){
          jtf.setText("");
          jtf.setText("*");
          jtf.requestFocus();
        }
        else{
          String str = jtf.getText();
          jtf.setText(str+"*");
        }
      }
    });
    dvd.addActionListener(new ActionListener(){  //除号的输入
      public void actionPerformed(ActionEvent arg0){
        if(jtf.getText().equals("0")){
          jtf.setText("");
          jtf.setText("/");
          jtf.requestFocus();
        }
        else{
          String str = jtf.getText();
          jtf.setText(str+"/");
        }
      }
    });
    //【**退格功能如下**】
    tg.addActionListener(new ActionListener(){//监听退格键
      public void actionPerformed(ActionEvent arg0){//处理退格键被按下的事件
        String text = jtf.getText();
        int i = text.length();
        if(i>0){
          text = text.substring(0,i-1);//去掉最后一个字符
          if (text.length() == 0) {// 如果文本没有了内容,则初始化计算器的各种值
            jtf.setText("0");
          } else { // 显示新的文本
            jtf.setText(text);
        }
      }
      }
    });
    //【**清零功能如下**】
    ql.addActionListener(new ActionListener(){//监听清零键
      public void actionPerformed(ActionEvent e) {
        jtf.setText("0");//将文本框置为0(清零功能)
      }

    });
    //【**平方功能如下**】
    root.addActionListener(new ActionListener(){//监听root键
      public void actionPerformed(ActionEvent e){//root键被按事件
        String i = jtf.getText();
        Double j = Double.parseDouble(i);//将字符串i转换成对应的double类型的数值
        double ans = j*j; //求平方
        String answer =String.valueOf(ans);//将int型数据转换成String类型
        jtf.setText(answer);//将文本框设置为平方后的结果
      }
    });
    //【**开方功能如下**】
    sqr.addActionListener(new ActionListener(){//监听sqrt键
      public void actionPerformed(ActionEvent e){//sqrt键被按事件
        String i = jtf.getText();
        Double j = Double.parseDouble(i);//将字符串转换成对应的double类型的数值
        double ans = (double)Math.sqrt(j);//求开方
        String answer = String.valueOf(ans);//将double型数据转换成String类型
        jtf.setText(answer);//将文本框设置为开方后的结果
      }
    });

    //【等号实现 加减乘除 功能】
    equ.addActionListener(new ActionListener(){ //监听 “等号” 按键
      public void actionPerformed(ActionEvent arg0){//处理“等号” 按键被按下事件
        //【**加法运算**】
        if(jtf.getText().indexOf("+")!= -1){
          //将字符串分割为子字符串,然后将结果作为字符串数组返回
          String[] s = jtf.getText().split("[+]");//转义字符,要用"[+]"或者"\+"
          Double d1 = Double.parseDouble(s[0]);//返回一个指定字符串表示的double值
          Double d2 = Double.parseDouble(s[1]);
          double ans = d1 + d2;
          String answer = String.valueOf(ans);//将结果转换为字符串
          jtf.setText(answer);//将加法运算的结果以字符串形式在文本框中显示
        }
        //【**减法运算**】
        else if(jtf.getText().indexOf("-")!= -1){
          String[] s = jtf.getText().split("-");
          jtf.setText("");
          Double d1 = Double.parseDouble(s[0]);
          Double d2 = Double.parseDouble(s[1]);
          double ans = d1-d2;
          String answer =String.valueOf(ans);
          jtf.setText(answer);
        }
        //【**乘法运算**】
        else if(jtf.getText().indexOf("*")!= -1){
          String[] s = jtf.getText().split("[*]");//*是转义字符,要用"[*]",或者"\*"
          jtf.setText("");
          Double d1 = Double.parseDouble(s[0]);
          Double d2 = Double.parseDouble(s[1]);
          double ans = d1*d2;
          String answer =String.valueOf(ans);
          jtf.setText(answer);
        }
        //【**除法运算**】
        else if(jtf.getText().indexOf("/")!= -1){
          String[] s = jtf.getText().split("/");
          jtf.setText("");
          Double d1 = Double.parseDouble(s[0]);
          Double d2 = Double.parseDouble(s[1]);
          double ans = d1/d2;
          String answer =String.valueOf(ans);
          jtf.setText(answer);
        }
        else{
          jtf.setText("请选择要进行的运算");
        }
      }
    });
  }
  public static void main(String[] args) {
    new Caculator();
  }
}

总结:

1.掌握基本的GUI添加按钮、文本框的方法
2.掌握字符串的处理,这里用到了indexOf()、split()等方法
3.注意Java中遇到的转义字符。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • java实现计算器加法小程序(图形化界面)

    对于一个简单的计算器加法小程序,它首先是由五个组件构成的,三个文本框,两个用来输入数字,一个用来输出最后的结果,接下来是一个标签,标签的内容是加号,表示这里计算的是加法,最后一个组建是一个按钮,点击该按钮时会输出计算的结果.在这个小程序中,我们采用的布局管理器时FlowLayout.基本元素就是这些,接下来我们将演示两种实现的方法: (1).传递成员局部变量的方法,具体代码如下: package 实例11; import java.awt.*; import java.awt.event.*;

  • Java简易计算器程序设计

    编写一个模拟计算器的应用程序,使用面板和网格布局, 添加一个文本框,10个数字按钮(0~9),4个加减乘除按钮, 一个等号按钮,一个清除按钮,一个求平方根按钮,一个退格按钮, 要求将计算公式和结果显示在文本框中,实现效果如下图所示. Java简易计算器代码: import javax.swing.*; import javax.swing.JTextField; import java.awt.*; import java.awt.event.*; import java.lang.*; imp

  • java模仿windows计算器示例

    这个计算器的界面模仿Windows自带的简易计算器,包括交互界面和和对各种输入的响应.目前尚未实现菜单栏和记忆类按钮的功能 复制代码 代码如下: import java.awt.Color;import java.awt.Container;import java.awt.GridLayout;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.ActionListener; import

  • java实现简单年龄计算器

    本文实例为大家分享了java实现简单年龄计算器的具体代码,供大家参考,具体内容如下 制作一个如下图年龄计算器 根据题目,我做了一个由Calendar类以及年月日各相减得到的年龄,当然正确的方法不止一个,以下为我的源代码和结果截图: package com.Date; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.uti

  • 使用jsp调用javabean实现超简单网页计算器示例

    以下是代码: Calculator.java 复制代码 代码如下: package com.amos.model; import java.math.BigDecimal; /** * @ClassName: Calculator * @Description: 计算器 * @author: amosli * @email:amosli@infomorrow.com * @date Mar 20, 2014 1:04:59 AM  */ public class Calculator {    

  • Java swing实现的计算器功能完整实例

    本文实例讲述了Java swing实现的计算器功能.分享给大家供大家参考,具体如下: package awtDemo; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.Vector; public class Calculator { String str1 = "0"; // 运算数1 初值一定为0 为了程序的安全 String str2 = "0"

  • java实现简易版图形界面计算器

    经过一个月的Java学习,听说Java中的第一个小型程序好多都做的是计算器,今天我也来做做吧,把这一个月学习的知识简单的综合一下,熟练近期学习的知识点. 我做的计算器如下图: 功能:对实数进行加.减.乘.除.余操作. 界面设置:首先设置一个窗体,一个菜单条,三个菜单项(无功能),三个标签(作为显示数据的地方,第一个标签作为提示作用,第二个标签作为输入数据作用,第三个标签显示结果作用),20个按钮(循环进行添加),两个面板(把三个标签添加到第一个面板里,把20个按钮添加到第二个面板里,用网格布局,

  • java图形界面AWT编写计算器

    一.前言 1)这个计算器是基于java语言下图形界面AWT编写的.其实我认为写这个计算器,实现什么功能不重要,市场也不缺这个计算器,而是在于对AWT中三大布局的及画板的使用简单控件的操作使用.通过联系熟悉掌握AWT基础为深入学习打下基础.这个计算器功能也十分简单,空有其表.不过有兴趣的话可以继续添加功能完善操作等. 2)使用平台:主要使用Myeclipse2014 3)主要知识点:java 基础; awt+swing 二.功能实现及代码展示 1)主要是layout布局的练习,对画板文本框的使用,

  • java实现简易计算器功能

    本文为大家分享了java实现简易计算器功能,具体内容如下 题目: 编写一个模拟计算器的程序.在面板中添加一个文本框(显示按键及运算结果). 10个数字按钮(0~9).4个运算按钮(加.减.乘.除).一个等号按钮.一个清除按钮, 要求将按键和结果显示在文本框中. 代码过程展示: import java.awt.Container; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.Action

  • java 简单的计算器程序实例代码

    java 简单的计算器程序 实现实例: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Calculator { public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { CalculatorFrame frame = new Calculato

随机推荐