`
zhanghaidang
  • 浏览: 39347 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

SWING简易计算器

    博客分类:
  • J2EE
阅读更多
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();
}
}
3
0
分享到:
评论
2 楼 zhanghaidang 2009-04-09  
util.MyFrameInitUtil.init(this, new Dimension(200, 200), "简易计算器", true);
这个是我写的一个窗体初始化的方法,主要是居中效果.
1 楼 shiren1118 2009-04-01  
class CalculatorFrame extends JFrame {
public CalculatorFrame() {
add(new CalculatorPanel());
util.MyFrameInitUtil.init(this, new Dimension(200, 200), "简易计算器", true); pack();

}



util是自己写吧?

补充一下

相关推荐

    javaswing简易计算器

    使用java swing 编写的计算器,可提高初学者对gui的理解!

    swing简易计算器

    Swing简易计算器是一款基于Java Swing库开发的桌面应用程序,它提供了基本的计算功能,适合初学者学习和日常简单计算需求。在Java编程中,Swing是用于构建图形用户界面(GUI)的重要工具,它提供了丰富的组件和事件...

    基于Java swing组件实现简易计算器

    "基于Java swing组件实现简易计算器" 本文主要介绍了基于Java swing组件实现简易计算器的知识点,以下是相关知识点的总结: 1. JFrame组件:JFrame是Java swing组件中的一种顶层容器,用于创建一个窗口框架。通过...

    Swing版简单计算器

    Swing版的简单计算器,实现加减乘除,第一次写,希望大家给点建议。

    JAVA Swing简易科学计算器

    JAVA Swing简易科学计算器是一款基于JAVA Swing开发的图形用户界面(GUI)应用,主要设计用于执行基本数学运算以及一些更复杂的科学计算,如三角函数和二进制转换。它作为一个JAVA大作业,展示了开发者对JAVA GUI...

    java实现简易计算器

    在Java编程语言中实现一个简易计算器是一项常见的学习任务,它能帮助初学者更好地理解面向对象编程的概念、控制流程以及输入/输出操作。下面我们将详细探讨如何实现这样的计算器,并结合提供的"计算器"文件名称来...

    简易计算器Java IDEA

    【标题】"简易计算器Java IDEA" 是一个基于Java Swing开发的简单计算器项目,它在集成开发环境IntelliJ IDEA中实现。这个项目旨在帮助初学者理解Java编程语言的基础,特别是Swing库在创建图形用户界面(GUI)方面的...

    Java swing编写的计算器界面.zip

    本压缩包"Java swing编写的计算器界面.zip"包含了用Java Swing实现的计算器的源代码示例,以及相关文档,帮助开发者理解如何利用Swing构建这样的应用。 首先,让我们深入了解一下Java Swing。Swing是基于Java AWT...

    Java版简易计算器程序设计

    本简易计算器项目是一个典型的Java Swing图形界面应用案例,它不仅包含了基本的数学运算功能,还扩展了简单的内存操作功能。通过对该项目的学习,可以深入了解Swing组件库的使用方法以及如何在Java中实现事件驱动的...

    Swing实现一个简单的计算器

    Swing实现简单计算器的关键技术点 1. Swing 组件 在这个简单计算器的实现中,我们使用了多种 Swing 组件,包括 JFrame、JPanel、JLabel、JButton 和 JTextField。这些组件都是 Java 中用于构建图形用户界面的基础...

    Javaswing实现简易计算器

    在这个"Javaswing实现简易计算器"项目中,开发者构建了一个功能齐全的桌面计算器,涵盖了基本的数学运算以及一些高级功能。 1. **基础组件使用**: - `JFrame`:这是Java Swing中的窗口类,是所有Swing应用程序的...

    简易计算器(Java Swing实现)

    * Java计算器 * chishaxie * 支持中缀表达式运算(可以算一个很长的数学表达式) * 支持高精度浮点数运算 * 支持按钮和键盘同步监听 * 支持错误处理并提示 */ 可以试试算65535的阶乘啰(等待1分钟左右)

    java版简易计算器

    【Java版简易计算器】是一个基于Java编程语言实现的计算工具,主要使用了Swing库来构建用户界面。Swing是Java Foundation Classes (JFC)的一部分,提供了丰富的组件库,用于创建桌面应用程序。在这个项目中,我们...

    java GUI简易计算器

    总之,"java GUI简易计算器"是一个结合了Java Swing组件、事件处理和基本计算逻辑的项目。它展示了如何利用非传统的方法(如用`JLabel`模拟按钮)来实现GUI应用,同时提供了学习和实践Java GUI编程的良好机会。通过...

    java swing 编写的简易计算器

    在这个“java swing 编写的简易计算器”项目中,我们将会探讨如何利用Swing组件来构建一个基本的计算器程序,适合初学者和小白进行学习。这个项目是用Eclipse IDE设计的,因此对于那些不熟悉此IDE的人来说,它提供了...

    java无功能简易计算器

    用javaSwing做的无功能简易计算器

    简易计算器java代码

    综上所述,通过理解和掌握Java Swing的基本组件及其布局管理器和事件处理机制,我们可以构建出如题目要求的简易计算器界面。在实际开发过程中,还需要进一步完善事件处理逻辑和其他细节,以实现完整的功能。

    JAVA简易计算器(可判断运算符的优先级)

    本资源是一个使用JAVA语言实现的简易计算器,该计算器可以判断运算符的优先级,并且使用了AWT和Swing库来实现图形用户界面。下面是该计算器的知识点解释: 1. Java AWT库:AWT库是Java语言中一个基本的图形用户界面...

    java简易计算器实训报告.docx

    【Java简易计算器实训报告】 Java简易计算器的实训项目旨在让学生深入理解和掌握Java编程语言,特别是面向对象编程技术。在这个项目中,学生需要设计并实现一个包含简易计算器和科学计算器功能的程序,以此来巩固和...

    一个简易的计算器 java小程序

    通过以上步骤,我们可以构建一个功能齐全且易于使用的简易计算器。这个项目对于初学者来说是一个很好的实践,可以帮助他们掌握Java GUI编程和基本的数学运算处理。同时,这个程序也可以作为进一步学习的基础,如添加...

Global site tag (gtag.js) - Google Analytics