import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
//import command.MyFrameUitl;
class CalculatorPanel extends JPanel {
JPanel panel;// 存放数字,符号的面板
JButton display;// 结果显示的地方
JButton clear;// 清空结果
String value1; // 计算中的第1个数
String value2; // 计算中的第2个数
double result; // 计算结果
String lastCommand;// 保存符号
boolean start; // 标记,判断是不是首次计算
boolean valueflag; // 标记value1中是否保存有效数字,true有,false无
public CalculatorPanel() {
panel = new JPanel();
display = new JButton("0.0");
display.setEnabled(false); // 设置按钮为禁用样式,用于显示作用
clear = new JButton("clear");
result = 0D; // 结果初始为0
lastCommand = "="; // 初始化保存"="
start = true; // true为首次计算
valueflag = true; // 用于判断是否清空显示区域的值,true不需要,false需要
// 两个事件处理对象,分别处理 数字,符号
ActionListener insert = new InsertAction();
ActionListener command = new CommandAction();
panel.setLayout(new GridLayout(4, 4));// 中间面板的布局
addButton("7", insert);
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);
setLayout(new BorderLayout());// 边框布局
this.add(display, BorderLayout.NORTH); // 加入到顶部
this.add(clear, BorderLayout.SOUTH); // 加入到底部
this.add(panel, BorderLayout.CENTER);// 加入到中间
// 清除功能
clear.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 初始化属性值
display.setText("0.0");
result = 0D;
lastCommand = "=";
start = true;
valueflag = true;
}
});
}
// 增加按钮到面板,并注册监听器
private void addButton(String label, ActionListener listener) {
JButton button = new JButton(label);
button.addActionListener(listener);
panel.add(button);
}
// 数字处理监听器对象
private class InsertAction implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
String input = e.getActionCommand(); // 获取按的数字
if (start) { // 如果是首次计算
if (input.equals(".")) { // 如果一上来就输入"."
return;
}
if (isZero()) { // 如果是"0.0"
display.setText(""); // 清空
}
start = false; // 已经输入过
} else { // 不是首次计算
if (display.getText().equals("-")) { // 如果只有一个"-"
return;
}
if (input.equals(".")) { // 如果输入是"."
if (eqaulsPoint()) {
return;
}
}
}
// 判断是否需要清空显示区域的值
if (!valueflag) {
valueflag = true;
display.setText("");
}
display.setText(display.getText() + input);
}
}
// 符号处理监听器对象
private class CommandAction implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
String inputCommand = e.getActionCommand(); // 获取按的符号
if (start) { // 首次输入的情况
if (inputCommand.equals("-")) { // 如果一上来就是"-"
display.setText("-");
}
} else {
//如果是连续输入运算符,就不去计算
if (valueflag) {
calculate(Double.parseDouble(display.getText()));
}
lastCommand = inputCommand;// 保存运算符
// 这里意味着下次再输入数字的话,就要清空显示区域的值
// 另一个作用就是判断用户是不是连接输入去运算符
valueflag = false;
}
}
}
// 计算并显示结果
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);
}
// 判断显示区域的值display中是否包含有一个".", true存在,false为不存在
private boolean eqaulsPoint() {
String value = display.getText();
int index = value.indexOf("."); // 返回.的下标,如果返回-1,则证明不存在
return !(index == -1);
}
// 判断显示区域的值display中最后字符是不是".", true是 false不是
private boolean lastIsPoint() {
String value = display.getText();
int index = value.indexOf(".");
return index == value.length() - 1;
}
// 判断显示区域的值 是不是 "0.0" true是 false不是
private boolean isZero() {
String value = display.getText();
return value.equals("0.0");
}
}
class CalculatorFrame extends JFrame {
public CalculatorFrame() {
add(new CalculatorPanel());
util.MyFrameInitUtil.init(this, new Dimension(200, 200), "简易计算器", true);
pack();
}
}
public class CalculatorTest {
public static void main(String[] args) {
new CalculatorFrame();
}
}
分享到:
相关推荐
使用java swing 编写的计算器,可提高初学者对gui的理解!
Swing简易计算器是一款基于Java Swing库开发的桌面应用程序,它提供了基本的计算功能,适合初学者学习和日常简单计算需求。在Java编程中,Swing是用于构建图形用户界面(GUI)的重要工具,它提供了丰富的组件和事件...
"基于Java swing组件实现简易计算器" 本文主要介绍了基于Java swing组件实现简易计算器的知识点,以下是相关知识点的总结: 1. JFrame组件:JFrame是Java swing组件中的一种顶层容器,用于创建一个窗口框架。通过...
Swing版的简单计算器,实现加减乘除,第一次写,希望大家给点建议。
JAVA Swing简易科学计算器是一款基于JAVA Swing开发的图形用户界面(GUI)应用,主要设计用于执行基本数学运算以及一些更复杂的科学计算,如三角函数和二进制转换。它作为一个JAVA大作业,展示了开发者对JAVA GUI...
在Java编程语言中实现一个简易计算器是一项常见的学习任务,它能帮助初学者更好地理解面向对象编程的概念、控制流程以及输入/输出操作。下面我们将详细探讨如何实现这样的计算器,并结合提供的"计算器"文件名称来...
【标题】"简易计算器Java IDEA" 是一个基于Java Swing开发的简单计算器项目,它在集成开发环境IntelliJ IDEA中实现。这个项目旨在帮助初学者理解Java编程语言的基础,特别是Swing库在创建图形用户界面(GUI)方面的...
本压缩包"Java swing编写的计算器界面.zip"包含了用Java Swing实现的计算器的源代码示例,以及相关文档,帮助开发者理解如何利用Swing构建这样的应用。 首先,让我们深入了解一下Java Swing。Swing是基于Java AWT...
本简易计算器项目是一个典型的Java Swing图形界面应用案例,它不仅包含了基本的数学运算功能,还扩展了简单的内存操作功能。通过对该项目的学习,可以深入了解Swing组件库的使用方法以及如何在Java中实现事件驱动的...
Swing实现简单计算器的关键技术点 1. Swing 组件 在这个简单计算器的实现中,我们使用了多种 Swing 组件,包括 JFrame、JPanel、JLabel、JButton 和 JTextField。这些组件都是 Java 中用于构建图形用户界面的基础...
在这个"Javaswing实现简易计算器"项目中,开发者构建了一个功能齐全的桌面计算器,涵盖了基本的数学运算以及一些高级功能。 1. **基础组件使用**: - `JFrame`:这是Java Swing中的窗口类,是所有Swing应用程序的...
* Java计算器 * chishaxie * 支持中缀表达式运算(可以算一个很长的数学表达式) * 支持高精度浮点数运算 * 支持按钮和键盘同步监听 * 支持错误处理并提示 */ 可以试试算65535的阶乘啰(等待1分钟左右)
【Java版简易计算器】是一个基于Java编程语言实现的计算工具,主要使用了Swing库来构建用户界面。Swing是Java Foundation Classes (JFC)的一部分,提供了丰富的组件库,用于创建桌面应用程序。在这个项目中,我们...
总之,"java GUI简易计算器"是一个结合了Java Swing组件、事件处理和基本计算逻辑的项目。它展示了如何利用非传统的方法(如用`JLabel`模拟按钮)来实现GUI应用,同时提供了学习和实践Java GUI编程的良好机会。通过...
在这个“java swing 编写的简易计算器”项目中,我们将会探讨如何利用Swing组件来构建一个基本的计算器程序,适合初学者和小白进行学习。这个项目是用Eclipse IDE设计的,因此对于那些不熟悉此IDE的人来说,它提供了...
用javaSwing做的无功能简易计算器
综上所述,通过理解和掌握Java Swing的基本组件及其布局管理器和事件处理机制,我们可以构建出如题目要求的简易计算器界面。在实际开发过程中,还需要进一步完善事件处理逻辑和其他细节,以实现完整的功能。
本资源是一个使用JAVA语言实现的简易计算器,该计算器可以判断运算符的优先级,并且使用了AWT和Swing库来实现图形用户界面。下面是该计算器的知识点解释: 1. Java AWT库:AWT库是Java语言中一个基本的图形用户界面...
【Java简易计算器实训报告】 Java简易计算器的实训项目旨在让学生深入理解和掌握Java编程语言,特别是面向对象编程技术。在这个项目中,学生需要设计并实现一个包含简易计算器和科学计算器功能的程序,以此来巩固和...
通过以上步骤,我们可以构建一个功能齐全且易于使用的简易计算器。这个项目对于初学者来说是一个很好的实践,可以帮助他们掌握Java GUI编程和基本的数学运算处理。同时,这个程序也可以作为进一步学习的基础,如添加...