创建一个简单的计算器 布局 计算器具有: 顶部的显示标签,用于显示计算结果 供用户在中间输入整数/双精度的文本字段 底部的“清除”、“+”、“-”、“*”和“/”按钮 所需的最终外观: 功能性 创建一个累加器状态变量,用于跟踪计算的当前总体值。 单击“清除”按钮,将累加器值设置为 0 单击“+”按钮,将文本字段值添加到累加器值 单击“-”按钮,从累加器值中减去文本字段值 单击“*”按钮,将累加器值乘以文本字段值 单击“/”按钮,将累加器值除以文本字段值 按下按钮后,使用新的累加器值更新显示标签并清空文本字段。 (正确布局:0.25P, 类扩展 JFrame: 0.25P, 类遵循 OOP 原则:0.25P, 主方法全局设置:0.25P) (类实现 ActionListener:0.25P, 使用累加器变量:0.25P, 按预期工作:0.25P, 防止错误的输入检查:0.25P)

时间: 2023-12-20 22:05:24 浏览: 29
以下是实现要求的代码: ```java import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Calculator extends JFrame implements ActionListener { private JLabel resultLabel; private JTextField inputField; private JButton clearButton, addButton, subtractButton, multiplyButton, divideButton; private double accumulator = 0; public Calculator() { super("Calculator"); setLayout(new BorderLayout()); resultLabel = new JLabel("0", JLabel.RIGHT); resultLabel.setFont(new Font("SansSerif", Font.PLAIN, 20)); add(resultLabel, BorderLayout.NORTH); inputField = new JTextField(); inputField.setHorizontalAlignment(JTextField.RIGHT); add(inputField, BorderLayout.CENTER); JPanel buttonPanel = new JPanel(new GridLayout(1, 5)); clearButton = new JButton("Clear"); addButton = new JButton("+"); subtractButton = new JButton("-"); multiplyButton = new JButton("*"); divideButton = new JButton("/"); buttonPanel.add(clearButton); buttonPanel.add(addButton); buttonPanel.add(subtractButton); buttonPanel.add(multiplyButton); buttonPanel.add(divideButton); add(buttonPanel, BorderLayout.SOUTH); clearButton.addActionListener(this); addButton.addActionListener(this); subtractButton.addActionListener(this); multiplyButton.addActionListener(this); divideButton.addActionListener(this); setSize(300, 150); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } public void actionPerformed(ActionEvent e) { if (e.getSource() == clearButton) { accumulator = 0; resultLabel.setText("0"); inputField.setText(""); } else { double val = 0; try { val = Double.parseDouble(inputField.getText()); } catch (NumberFormatException ex) { JOptionPane.showMessageDialog(this, "Invalid input"); return; } if (e.getSource() == addButton) { accumulator += val; } else if (e.getSource() == subtractButton) { accumulator -= val; } else if (e.getSource() == multiplyButton) { accumulator *= val; } else if (e.getSource() == divideButton) { if (val == 0) { JOptionPane.showMessageDialog(this, "Cannot divide by zero"); return; } accumulator /= val; } resultLabel.setText(Double.toString(accumulator)); inputField.setText(""); } } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { new Calculator(); } }); } } ``` 上述代码实现了一个简单的计算器,包含了布局和功能的要求,同时也考虑了用户输入错误的情况并进行了检查。使用累加器变量来跟踪计算的当前总体值,并且通过 ActionListener 来处理按钮的点击事件。同时,代码也符合 OOP 原则,将 UI 和逻辑分离,并通过主方法进行全局设置。

相关推荐

最新推荐

recommend-type

Android Studio实现简易计算器(表格布局TableLayout)

主要为大家详细介绍了Android Studio实现简易计算器,表格布局TableLayout,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

设计一个程序来模拟一个简单的手持计算器

程序运行时,显示一个窗口,等待用户输入,用户可以从键盘输入要计算的表达式,输入的表达式显示在窗口中,用户键入’=’ 符号后,窗口显示出结果。 测试数据 程序输入不少于5种不同的表达式进行测试。 实现提示 可...
recommend-type

Android中使用GridLayout网格布局来制作简单的计算器App

主要介绍了Android中使用GridLayout网格布局来制作简单的计算器App的实例,GridLayout比表格布局TabelLayout更容易用来制作计算器这样的多按钮排列的界面,需要的朋友可以参考下
recommend-type

计算机专业毕业设计范例845篇jsp2118基于Web停车场管理系统的设计与实现_Servlet_MySql演示录像.rar

博主给大家详细整理了计算机毕业设计最新项目,对项目有任何疑问(部署跟文档),都可以问博主哦~ 一、JavaWeb管理系统毕设项目【计算机毕设选题】计算机毕业设计选题,500个热门选题推荐,更多作品展示 计算机毕业设计|PHP毕业设计|JSP毕业程序设计|Android毕业设计|Python设计论文|微信小程序设计
recommend-type

Windows 10 平台 FFmpeg 开发环境搭建 博客资源

【FFmpeg】Windows 10 平台 FFmpeg 开发环境搭建 ④ ( FFmpeg 开发库内容说明 | 创建并配置 FFmpeg 项目 | 拷贝 DLL 动态库到 SysWOW64 目录 ) https://hanshuliang.blog.csdn.net/article/details/139172564 博客资源 一、FFmpeg 开发库 1、FFmpeg 开发库编译 2、FFmpeg 开发库内容说明 二、创建并配置 FFmpeg 项目 1、拷贝 dll 动态库到 C:\Windows\SysWOW64 目录 - 必须操作 特别关注 2、创建 Qt 项目 - C 语言程序 3、配置 FFmpeg 开发库 - C 语言项目 4、创建并配置 FFmpeg 开发库 - C++ 项目
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MySQL数据库性能提升秘籍:揭秘性能下降幕后真凶及解决策略

![MySQL数据库性能提升秘籍:揭秘性能下降幕后真凶及解决策略](http://xiaoyuge.work/explain-sql/index/2.png) # 1. MySQL数据库性能优化概述** MySQL数据库性能优化是一项至关重要的任务,可以显著提高应用程序的响应时间和整体用户体验。优化涉及识别和解决影响数据库性能的因素,包括硬件资源瓶颈、软件配置不当和数据库设计缺陷。通过采取适当的优化策略,可以显著提升数据库性能,满足业务需求并提高用户满意度。 # 2. MySQL数据库性能下降的幕后真凶 ### 2.1 硬件资源瓶颈 #### 2.1.1 CPU利用率过高 **症状:
recommend-type

如何在unity创建按钮

在 Unity 中创建按钮的步骤如下: 1. 在 Unity 中创建一个 UI Canvas,选择 GameObject -> UI -> Canvas。 2. 在 Canvas 中创建一个按钮,选择 GameObject -> UI -> Button。 3. 在场景视图中调整按钮的位置和大小。 4. 在 Inspector 中设置按钮的文本、颜色、字体等属性。 5. 添加按钮的响应事件,选择按钮,在 Inspector 的 On Click () 中添加相应的方法。 这样就可以创建一个按钮了,你可以在游戏中使用它来触发相应的操作。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。