java图形界面AWT编写计算器

一、前言

1)这个计算器是基于java语言下图形界面AWT编写的。其实我认为写这个计算器,实现什么功能不重要,市场也不缺这个计算器,而是在于对AWT中三大布局的及画板的使用简单控件的操作使用。通过联系熟悉掌握AWT基础为深入学习打下基础。这个计算器功能也十分简单,空有其表。不过有兴趣的话可以继续添加功能完善操作等。

2)使用平台:主要使用Myeclipse2014

3)主要知识点:java 基础; awt+swing

二、功能实现及代码展示

1)主要是layout布局的练习,对画板文本框的使用,以及控件button的事件的注册与监听。因为功能也很简单,所以代码就简写到同一个类里了。实现了基本的四则运算。

2)代码如下:

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Color; 

public class JiSuanJi { 

  private JFrame frame;  //声明相关布局面板
  private JPanel panelwest;
  private JPanel panelcenter;
  private JPanel paneleast;
  private TextField tf; 

  private JButton buttonzero; //声明按钮控件
  private JButton buttondot;
  private JButton buttonequal;
  private JButton buttonplus,buttonminus,buttonmultiple,buttondevision,buttonsin,buttontozero;
  private JButton buttonone,buttontwo,buttonthree,buttonfour,buttonfive,buttonsix,buttonseven,buttoneight,buttonnine; 

  private ButtonListener listener;            //声明监听事件 

  public static void main(String args[]){
    new JiSuanJi();
  } 

  public JiSuanJi(){ 

    initView();                    //实例化相关对象 

    setCenter();                    //布局添加控件及相关控件处理
    setWest();
    setEast(); 

    addListener();                   //设置监听 

    setFrame();                    //对 frame设置布局及显示处理 

  } 

  class ButtonListener implements ActionListener{
    int biaozhi=0;                   //初始化相关变量
    double flag1=0,flag2=0,flag3=0;
    //@Override
    public void actionPerformed(ActionEvent e){
      //(1)通过 e.getSource(),获取点击事件的按钮来源,作出相应处理 

      if(e.getSource()==buttondot){
        tf.setText("0.");
      }
      if(e.getSource()==buttontozero){
        tf.setText("");
      }
      if(e.getSource()==buttonzero){
        tf.setText(tf.getText()+"0");
        flag1=Double.parseDouble(tf.getText());
      }
      else if(e.getSource()==buttonone){
        tf.setText(tf.getText()+"1");//文本框显示1、2、3.。。
        flag1=Double.parseDouble(tf.getText());
      }
      else if(e.getSource()==buttontwo){
        tf.setText(tf.getText()+"2");
        flag1=Double.parseDouble(tf.getText());
      }
      else if(e.getSource()==buttonthree){
        tf.setText(tf.getText()+"3");
        flag1=Double.parseDouble(tf.getText());
      }
      else if(e.getSource()==buttonfour){
        tf.setText(tf.getText()+"4");
        flag1=Double.parseDouble(tf.getText());
      }
      else if(e.getSource()==buttonfive){
        tf.setText(tf.getText()+"5");
        flag1=Double.parseDouble(tf.getText());
      } 

      else if(e.getSource()==buttonsix){
        tf.setText(tf.getText()+"6");
        flag1=Double.parseDouble(tf.getText());
      }
      else if(e.getSource()==buttonseven){
        tf.setText(tf.getText()+"7");
        flag1=Double.parseDouble(tf.getText());
      }
      else if(e.getSource()==buttoneight){
        tf.setText(tf.getText()+"8");
        flag1=Double.parseDouble(tf.getText());
      }
      else if(e.getSource()==buttonnine){
        tf.setText(tf.getText()+"9");
        flag1=Double.parseDouble(tf.getText());
      }
      if(e.getSource()==buttonplus){
        tf.setText("");
        flag2=flag1;
        biaozhi=0;
      }
      if(e.getSource()==buttonminus){
        tf.setText("");
        flag2=flag1;
        biaozhi=1;
      }
      if(e.getSource()==buttonmultiple){
        tf.setText("");
        flag2=flag1;
        biaozhi=2;
      }
      if(e.getSource()==buttondevision){
        tf.setText("");
        flag2=flag1;
        biaozhi=3;
      }
      if(e.getSource()==buttonsin){
        flag3=Math.sin(flag1);
        tf.setText(flag3+"");
      }
      if(e.getSource()==buttonequal){
        if(biaozhi==0){
          flag3=flag2+flag1;
        }
        if(biaozhi==1){
          flag3=flag2-flag1;
        }
        if(biaozhi==2){
          flag3=flag2*flag1;
        }
        if(biaozhi==3){
          flag3=flag2/flag1;
        }
        tf.setText(flag3+"");
      }
    }
  } 

  private void initView(){ 

    /**
     * 创建框架、小容器对象、按钮对象
     */
    tf = new TextField(30);//初始化界面宽度
    frame = new JFrame("简易计算机");
    panelcenter = new JPanel();
    panelwest = new JPanel();
    paneleast = new JPanel(); 

    listener = new ButtonListener(); //实例化监听对象
  } 

  private void setCenter(){ 

    //(1)初始化控件显示值
    buttonone=new JButton("1");
    buttontwo=new JButton("2");
    buttonthree=new JButton("3");
    buttonfour=new JButton("4");
    buttonfive=new JButton("5");
    buttonsix=new JButton("6");
    buttonseven=new JButton("7");
    buttoneight=new JButton("8");
    buttonnine=new JButton("9"); 

    //(2)设置布局样式
    panelcenter.setLayout(new GridLayout(3,3));//根据内容多少来布局 

    //(3)中央布局添加控件按钮
    panelcenter.add(buttonone);
    panelcenter.add(buttontwo);
    panelcenter.add(buttonthree);
    panelcenter.add(buttonfour);
    panelcenter.add(buttonfive);
    panelcenter.add(buttonsix);
    panelcenter.add(buttonseven);
    panelcenter.add(buttoneight);
    panelcenter.add(buttonnine);
  } 

  private void setEast(){ 

    //(1)设置控件显示符号
    buttonplus=new JButton("+");
    buttonminus=new JButton("-");
    buttonmultiple=new JButton("*");
    buttondevision=new JButton("/");
    buttonsin=new JButton("sin");
    buttontozero=new JButton("清除"); 

    //(2)设置布局样式
    paneleast.setLayout(new GridLayout(3,2)); 

    //(3)右布局添加相应按钮控件
    paneleast.add(buttonplus);
    paneleast.add(buttonminus);
    paneleast.add(buttonmultiple);
    paneleast.add(buttondevision);
    paneleast.add(buttonsin);
    paneleast.add(buttontozero); 

  } 

  private void setWest(){ 

    //(1)初始化控件显示值
    buttonzero=new JButton("0");
    buttondot=new JButton(".");
    buttonequal = new JButton("="); 

    //(2)对这三个按钮设置布局
    panelwest.setLayout(new GridLayout(3,1)); 

    //(3)左边布局添加按钮控件,将三个按钮添加入布局
    panelwest.add(buttonzero);
    panelwest.add(buttondot);
    panelwest.add(buttonequal); 

  } 

  private void addListener(){ 

    //(1)对 1-9对应的按钮添加监听
    buttonone.addActionListener(listener);
    buttontwo.addActionListener(listener);
    buttonthree.addActionListener(listener);
    buttonfour.addActionListener(listener);
    buttonfive.addActionListener(listener);
    buttonsix.addActionListener(listener);
    buttonseven.addActionListener(listener);
    buttoneight.addActionListener(listener);
    buttonnine.addActionListener(listener); 

    //(2)对运算符对应的按钮添加监听
    buttonplus.addActionListener(listener);
    buttonminus.addActionListener(listener);
    buttonmultiple.addActionListener(listener);
    buttondevision.addActionListener(listener);
    buttonsin.addActionListener(listener);
    buttontozero.addActionListener(listener); 

    //(3)对其与的符号对应的按钮监听
    buttonzero.addActionListener(listener);
    buttondot.addActionListener(listener);
    buttonequal.addActionListener(listener); 

  } 

  private void setFrame(){ 

    frame.setLayout(new BorderLayout());
    //将准备的不同方位的内容加入大框架
    frame.add(paneleast,"East");
    frame.add(tf,BorderLayout.NORTH);
    frame.add(panelwest,BorderLayout.WEST);
    frame.add(panelcenter,BorderLayout.CENTER);
    //设置颜色
    tf.setBackground(Color.green);
    frame.pack();
    //将框架展开
    frame.setLocation(500,500);
    //程序框架在屏幕的位置
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    //退出进程,不加此句,关闭页面但程序进程仍在后台运行
    frame.setVisible(true);
    //一个图形界面默认都是不可见的,setVisible是把图形界面设置为可见 

  }
}

代码测试可用。

三、演示与效果

1)运行界面如下:

当然了图形界面大小位置可调,也可初始化其位置与大小。

2)简单测试四则运算:11*12

好像简单的不能再简单了。这个计算器写下来重点是布局的联系button的简单使用

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

(0)

相关推荐

  • 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按钮控件数组实现计算器界面示例分享

    思路如下: 创建一个类,通过extends使其继承窗体类JFrame:创建一个JFrame对象,使用JFrame类的setVisible()方法设置窗体可见:在构造函数中,使用super()方法继承父类的构造方法:使用setTitle()方法设置窗体的标题:使用setBounds()方法设置窗体的显示位置及大小:使用setDefaultCloseOperation()方法设置窗体关闭按钮的动作为退出:使用GridLayout创建网格布局管理器对象:使用GridLayout类的setHgap()方

  • 使用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 简单的计算器程序实例代码

    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

  • java实现简单的计算器类实例

    本文实例讲述了java实现简单的计算器类.分享给大家供大家参考.具体如下: package chap; import java.awt.BorderLayout; import java.awt.Color; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text

  • Java实现Andriod带看括弧的计算器代码

    废话不多说了,一切尽在代码中,具体代码如下所示: 界面 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_par

  • Java对象简单实用案例之计算器实现代码

    对 Java中的对象与属性,方法的使用,简单写了个案例 import java.util.Scanner; class Calculste { int a; //定义两个整数 int b; String option; //定义接收操作符的字符串 public void count(){ //对操作符进行判断 switch(option){ case "+": System.out.println("计算和:"+a+"+"+b+"=&q

  • 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编写计算器的常见方法.分享给大家供大家参考,具体如下: 方法一: package wanwa; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Calculator extends JFrame { private Container container; private GridBagLayout layout; private GridBagConstraint

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

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

  • java图形界面之加法计算器

    JAVA用于开发图形界面应用的 SWING 组件包功能强大,使用方便.接下来我们就使用其写一个简单的图形界面小程序:加法计算器. 第一步: 首先得构思,我们要做什么.加法计算器的话,做出来之后大概是这个样子的. 如上图所示,这个程序的界面在我们脑海中已经成型了:程序顶部有一个标题,这里用来交代我们程序的名字:功能上用户可以在方框 1 和方框 2 中放入想要进行相加的数值,然后我们点击下方的 “计算” 按钮,结果就会显示在方框 3 中. 第二步: 分析界面,我们该怎么做.从上图可以看出,界面中包含

  • Java图形界面Swing原理及用法解析

    这篇文章主要介绍了Java图形界面Swing原理及用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 JButton组件 布局管理器 FlowLayout 流式布局 BorderLayout 方位布局 GridLayout 表格布局 绝对布局 JLable 组件 文本框组件 JPanel轻量级容器 创建事件监听类 (更换监听类实现监听) 窗口监听适配器 都可使用匿名类实现监听 每个监听方法都可以返回一个Event对象来返回监听值 以上就是本

  • python 实现一个图形界面的汇率计算器

    调用的api接口: https://api.exchangerate-api.com/v4/latest/USD 完整代码 import requests from tkinter import * import tkinter as tk from tkinter import ttk class RealTimeCurrencyConverter(): def __init__(self,url): self.data = requests.get(url).json() self.curr

  • Java图形界面GUI布局方式(小结)

    流式布局 采用流式布局会将元素按从左到右的顺序排列,如果一个元素在一行中放不下,那这个元素会另起一行依然按照从左到右的顺序排列 示例: 代码 public class Test { public static void main(String[] args) { // 创建窗口 JFrame jFrame = new JFrame(); // 设置窗口名称 jFrame.setTitle("hello"); // 创建流式布局管理器 对齐方式为左对齐 LayoutManager lay

  • java图形界面编程实战代码

    关于Java图形化界面设计,基础知识网上可搜,下面简单介绍一下重点概念,然后就由浅入深代码实例. 程序是为了方便用户使用的,Java引入图形化界面编程. 1.JFrame 是容器类 2.AWT 是抽象窗口组件工具包,是 Java 最早的用于编写图形节目应用程序的开发包. 3.Swing 是为了解决 AWT 存在的问题而新开发的包,它以 AWT 为基础的. 代码实例1: package com.zhouzhou; //练习网格布局 import java.awt.*; import javax.s

  • java图形界面编程之模拟血压计

    复制代码 代码如下: package GraphicsCanvas; import java.awt.BorderLayout;import java.awt.Canvas;import java.awt.Color;import java.awt.Graphics;import java.awt.Image;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JBut

  • java图形界面之布局设计

    在界面设计中,一个容器要放置许多组件,为了美观,为组件安排在容器中的位置,这就是布局设计.java.awt中定义了多种布局类,每种布局类对应一种布局的策略.常用的有以下布局类: •FlowLayout,依次放置组件. •BoarderLayout,将组件放置在边界上. •CardLayout,将组件像扑克牌一样叠放,而每次只能显示其中一个组件. •GridLayout,将显示区域按行.列划分成一个个相等的格子,组件依次放入这些格子中. •GridBagLayout,将显示区域划分成许多矩形小单元

  • Java实现简单日历小程序 Java图形界面小日历开发

    今天给大家介绍一下如何用Java swing开发一款简单的小日历,下面我们来看代码: 首先创建一个CalendarBean类,用于基本的日期计算: package other1; import java.util.Calendar; public class CalendarBean { String day[]; int year=2005,month=0; public void setYear(int year) { this.year=year; } public int getYear

  • Java图形界面开发之简易记事本

    在学习了Java事件之后,自己写了一个极其简单的记事本.用到了MenuBar,Menu,MenuITem等控件,事件包括ActionListener以及KeyListener. 代码如下: package com.package3; /* * 功能:简易记事本的开发,可以保存文件,打开文件,退出记事本 * author:ywq */ import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*

随机推荐