当前位置: 首页 > news >正文

东莞代码网站建设阜阳集团网站建设

东莞代码网站建设,阜阳集团网站建设,北京网络营销方案,页面设计自述【案例11-2】 简易计算器 【案例介绍】 1.案例描述 本案例要求利用Java Swing 图形组件开发一个可以进行简单的四则运算的图形化计算器。 2.运行结果 运行结果 【案例分析】 要制作一个计算器#xff0c;首先要知道它由哪些部分组成#xff0c;如下图所示#xff1a; 一…【案例11-2】 简易计算器 【案例介绍】 1.案例描述 本案例要求利用Java Swing 图形组件开发一个可以进行简单的四则运算的图形化计算器。 2.运行结果 运行结果 【案例分析】 要制作一个计算器首先要知道它由哪些部分组成如下图所示 一个简单的图形化界面计算器需要由界面组件、组件的时间监听器和具体的事件处理逻辑组成。 实现一个简易图形化界面计算器可分以下几个步骤 1.UI组件创建和初始化包括窗体的创建显示计算结果文本框、清除按钮、数字按钮、运算符等按钮的初始化。 2.在窗体中添加UI组件包括放置数字键及运算符面板、放置清除框面板。 3.布局结束之后就是计算器的难点编写事件处理程序。 4.按键的响应实现。 5.计算逻辑的实现。 6.注册监听器 【案例实现】 Calculator.java package chapter1102;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.Vector;import java.math.BigDecimal;public class Calculator {          // 操作数1为了程序的安全初值一定设置这里我们设置为0。           String str1 0;          // 操作数2     String str2 0;      // 运算符    String signal ;        // 运算结果    String result ;     // 以下k1至k5为状态开关     // 开关1用于选择输入方向将要写入str1或str2     // 为 1 时写入 str1为 2 时写入 str2    int k1 1;    // 开关 2 用于记录符号键的次数     // 如果 k21 说明进行的是 23-98 这样的多符号运算    int k2 1;     // 开关3用于标识 str1 是否可以被清 0      // 等于 1 时可以不等于1时不能被清0    int k3 1;     // 开关4用于标识 str2 是否可以被清 0     // 等于 1 时可以不等于1时不能被清0    int k4 1;     // 开关5用于控制小数点可否被录入     // 等于1时可以不为1时输入的小数点被丢掉    int k5 1;     // store的作用类似于寄存器用于记录是否连续按下符号键    JButton store;      //vt 存储之前输入的运算符。    SuppressWarnings(rawtypes)    Vector vt new Vector(20, 10);     // 创建一个 JFrame 对象并初始化。JFrame 可以理解为程序的主窗体。        JFrame frame new JFrame(Calculator); //创建一个JTextField对象并初始化。JTextField用于显示操作和计算结果的文本框。     // 参数 20 表明可以显示 20 列的文本内容    JTextField result_TextField new JTextField(result, 20);     // 清除按钮    JButton clear_Button new JButton(Clear);     // 数字键0到9    JButton button0 new JButton(0);    JButton button1 new JButton(1);    JButton button2 new JButton(2);    JButton button3 new JButton(3);    JButton button4 new JButton(4);    JButton button5 new JButton(5);    JButton button6 new JButton(6);    JButton button7 new JButton(7);    JButton button8 new JButton(8);    JButton button9 new JButton(9);     // 计算命令按钮加减乘除以及小数点等    JButton button_Dian new JButton(.);    JButton button_jia new JButton();    JButton button_jian new JButton(-);    JButton button_cheng new JButton(*);    JButton button_chu new JButton(/);    JButton button_dy new JButton();    public Calculator() {        button0.setMnemonic(KeyEvent.VK_0);    result_TextField.setHorizontalAlignment(JTextField.RIGHT);        // 创建一个 Jpanel 对象并初始化         JPanel pan new JPanel();         // 设置该容器的布局为四行四列边距为5像素        pan.setLayout(new GridLayout(4, 4, 5, 5));         // 将用于计算的按钮添加到容器内        pan.add(button7);        pan.add(button8);        pan.add(button9);        pan.add(button_chu);        pan.add(button4);        pan.add(button5);        pan.add(button6);        pan.add(button_cheng);        pan.add(button1);        pan.add(button2);        pan.add(button3);        pan.add(button_jian);         pan.add(button0);        pan.add(button_Dian);        pan.add(button_dy);        pan.add(button_jia);         // 设置 pan 对象的边距        pan.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));         // 按照同样的方式设置第二个JPanel        JPanel pan2 new JPanel();        pan2.setLayout(new BorderLayout());        pan2.add(result_TextField, BorderLayout.WEST);        pan2.add(clear_Button, BorderLayout.EAST);          // 设置主窗口出现在屏幕上的位置        frame.setLocation(300, 200);         // 设置窗体可以调大小        frame.setResizable(true);          //窗体中可以放置 JPanel这里我们将面板pan和面板pan2让如窗体        frame.getContentPane().setLayout(new BorderLayout());        frame.getContentPane().add(pan2, BorderLayout.NORTH);        frame.getContentPane().add(pan, BorderLayout.CENTER);        frame.pack();        frame.setVisible(true);         //Listener类中编写的是数字键的响应逻辑。        class Listener implements ActionListener {           SuppressWarnings(unchecked)           public void actionPerformed(ActionEvent e) {               String ss ((JButton) e.getSource()).getText();               store (JButton) e.getSource();               vt.add(store);               if (k1 1) {                   if (k3 1) {                       str1 ;                       k5 1;                   }                   str1 str1 ss;                   k3 k3 1;                   result_TextField.setText(str1);               } else if (k1 2) {                   if (k4 1) {                       str2 ;                       k5 1;                }                   str2 str2 ss;                   k4 k4 1;                   result_TextField.setText(str2);               }                                         }        }          //Listener_signal类中编写了运算符号键的响应逻辑        class Listener_signal implements ActionListener {           SuppressWarnings(unchecked)           public void actionPerformed(ActionEvent e) {               String ss2 ((JButton) e.getSource()).getText();               store (JButton) e.getSource();               vt.add(store);               if (k2 1) {                   k1 2;                   k5 1;                   signal ss2;                   k2 k2 1;               } else {                   int a vt.size();                   JButton c (JButton) vt.get(a - 2);                   if (!(c.getText().equals())                           !(c.getText().equals(-))                           !(c.getText().equals(*))                           !(c.getText().equals(/)))                   {                       cal();                       str1 result;                       k1 2;                       k5 1;                       k4 1;                       signal ss2;                   }                   k2 k2 1;               }           }        }     //Listener_clear类中编写了清除键的响应逻辑    class Listener_clear implements ActionListener {           SuppressWarnings(unchecked)           public void actionPerformed(ActionEvent e) {               store (JButton) e.getSource();               vt.add(store);               k5 1;               k2 1;               k1 1;               k3 1;               k4 1;               str1 0;               str2 0;               signal ;               result ;               result_TextField.setText(result);               vt.clear();           }        }     //Listener_dy类中编写的是等于号键的响应逻辑    class Listener_dy implements ActionListener {           SuppressWarnings(unchecked)           public void actionPerformed(ActionEvent e) {               store (JButton) e.getSource();               vt.add(store);               cal();               k1 1;                k2 1;               k3 1;               k4 1;               str1 result;            }        }//Listener_xiaos类中编写的是小数点键的相应逻辑class Listener_xiaos implements ActionListener {           SuppressWarnings(unchecked)           public void actionPerformed(ActionEvent e) {               store (JButton) e.getSource();               vt.add(store);               if (k5 1) {                   String ss2 ((JButton) e.getSource()).getText();                   if (k1 1) {                       if (k3 1) {                           str1 ;                           k5 1;                        }                       str1 str1 ss2;                       k3 k3 1;                       result_TextField.setText(str1);                   } else if (k1 2) {                       if (k4 1) {                           str2 ;                           k5 1;                       }                       str2 str2 ss2;                       k4 k4 1;                       result_TextField.setText(str2);                   }               }               k5 k5 1;           }        }          // 监听等于键        Listener_dy jt_dy new Listener_dy();         // 监听数字键        Listener jt new Listener();         // 监听符号键        Listener_signal jt_signal new Listener_signal();         // 监听清除键        Listener_clear jt_c new Listener_clear();          // 监听小数点键        Listener_xiaos jt_xs new Listener_xiaos();        button7.addActionListener(jt);        button8.addActionListener(jt);        button9.addActionListener(jt);        button_chu.addActionListener(jt_signal);        button4.addActionListener(jt);        button5.addActionListener(jt);        button6.addActionListener(jt);        button_cheng.addActionListener(jt_signal);        button1.addActionListener(jt);        button2.addActionListener(jt);        button3.addActionListener(jt);        button_jian.addActionListener(jt_signal);        button0.addActionListener(jt);        button_Dian.addActionListener(jt_xs);        button_dy.addActionListener(jt_dy);        button_jia.addActionListener(jt_signal);        clear_Button.addActionListener(jt_c);          // 窗体关闭事件的响应程序        frame.addWindowListener(new WindowAdapter() {           public void windowClosing(WindowEvent e) {               System.exit(0);           }        });    }     // calc()方法中编写了计算逻辑的实现。    public void cal() {        double a2;        double b2;        String c signal;        double result2 0;        if (c.equals()) {           result_TextField.setText(Please input operator);        } else {           if (str1.equals(.))               str1 0.0;           if (str2.equals(.))               str2 0.0;           a2 Double.valueOf(str1).doubleValue();           b2 Double.valueOf(str2).doubleValue();           if (c.equals()) {               result2 a2 b2;           }           if (c.equals(-)) {               result2 a2 - b2;           }           if (c.equals(*)) {               BigDecimal m1 new BigDecimal(Double.toString(a2));                   BigDecimal m2 new                                    BigDecimal(Double.toString(b2));                   result2 m1.multiply(m2).doubleValue();           }           if (c.equals(/)) {               if (b2 0) {                   result2 0;               } else {                   result2 a2 / b2;               }           }           result ((new Double(result2)).toString());           result_TextField.setText(result);        }    }    SuppressWarnings(unused)    public static void main(String[] args) {    try {    //通过 UIManager 来设置窗体的 UI 风格 UIManager.setLookAndFeel(javax.swing.plaf.metal.MetalLookAndFeel);        } catch (Exception e) {           e.printStackTrace();        }        Calculator cal new Calculator();    }} 上述代码中第7-32行代码定义了一些成员变量方便响应的逻辑实现。第34-35行代码创建了一个Vector对象存储之前输入的运算符。第37行代码创建了一个 JFrame 对象并初始化。JFrame 可以理解为程序的主窗体。第40行代码创建了一个JTextField对象并初始化。JTextField用于显示操作和计算结果的文本框。参数 20 表明可以显示 20 列的文本内容。第42行代码创建了一个清除按钮对象。第44-53行创建数字键0-9按钮对象。第55-60行创建计算命令按钮加减乘除以及小数点等按钮对象。第65-101行代码是对计算器进行布局。Listener类中编写的是数字键的响应逻辑。Listener_xiaos类中编写的是小数点键的相应逻辑。Listener_signal类中编写了运算符号键的响应逻辑。Listener_dy类中编写的是等于号键的响应逻辑。Listener_clear类中编写了清除键的响应逻辑。calc()方法中编写了计算逻辑的实现。第222-247行代码创建监听对象斌对各个按键进行监听。第249-253行代码为窗体关闭事件的响应程序。第297行代码通过 UIManager 来设置窗体的 UI 风格。
http://www.w-s-a.com/news/681886/

相关文章:

  • 南京网站c建设云世家 s浏览器
  • 如何做镜像别人网站wordpress菜单对齐修改
  • 长春网站建设net企业公示信息查询官网
  • 金鹏建设集团网站可在哪些网站做链接
  • 电子产品网站开发背景网站关键词优化方案
  • 建网站论坛wordpress提交数据库错误
  • 国内网站建设公司开源网站系统
  • 网站开发公司上大连网站建设流程图
  • 银川网站seo宁波网
  • 个人备案网站会影响吗网站添加 备案
  • 网站建设与电子商务的教案关于旅游网站建设的方案
  • 电子商务网站建设设计原则找做网站找那个平台做
  • 天津高端品牌网站建设韶关网站建设墨子
  • Wordpress多站点为什么注册不了2008iis搭建网站
  • 天津高端网站制作建网站的公司服务
  • 温州网站推广优化类似淘宝的网站怎么做的
  • 网站建设实训考试什么网站做玩具的比较多
  • 上海网站建设特点怎样给公司做一个网站做推广
  • 流量网站怎么做的济南优化排名公司
  • 保定网站制作套餐设计师导航网站大全
  • 惠州 商城网站建设石家庄新闻广播在线收听
  • 洪山网站建设域名购买之后怎么做网站
  • 北京网站建设公司服务哪家好wap是什么意思?
  • 怎么看公司网站做的好不好哦wordpress页面目录下
  • 做装修业务呢有多少网站平台搭建是什么
  • 潍坊优化网站排名淘宝做网站被骗
  • 建设专业网站的利弊免费logo设计生成器下载
  • 怎么在备案号添加网站网页设计动画网站
  • 网站开发 只要wordpress滑动注册
  • 跨境电商运营主要做什么静态网站如何做优化