java图形界面计算器_java实现图形化界面计算器

本文实例为大家分享了java实现图形化界面计算器的具体代码,供大家参考,具体内容如下

最终效果图:

9c26ea0d8cf453fc23afe055ad5cd051.png

项目流程:

第一步:实现图形化界面(添加计算器的 Button 和 用于显示输入数字、输出结果的JTextField等)

565286f18f6af1e056fff23f1290ad0b.png

第二步:给按钮和文本框添加鼠标监听事件。

第三步:实现加减乘除、开方、平方、清零和退格功能。

开方运算:

5507ee647c6140df4b9e8376dc8d9683.png

平方运算:

dc477dd7d1437df88f8f986f0a073e42.png

加法运算:

793951299441368b941facdb5231a167.png

c891fb1384dc5dc516db16a641cd6637.png

减法运算:

8c19d533b59921546aa2f5a3d89d76af.png

c89c1575fb40fd8e76452499f5ef1243.png

乘法运算:

f2e3038ed7d9721934f70499a55bb88c.png

4debf0506d7f9414f1383360588537f1.png

除法运算:

9ff535b7443b7244bba51146c0a81b98.png

333325771c6e2c2b933db2cfda7eb3aa.png

完整项目代码:

package First_App;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class Caculator extends JFrame{

/*

* 图形化界面设计

* */

private static final long serialVersionUID = 4907149509182425824L;

public Caculator(){

Container c = getContentPane(); //定义一个顶级容器c

setLayout(new GridLayout(2,1));//新建网格布局管理器,2行1列

JTextField jtf = new JTextField("0",40);//构造一个用指定文本和列初始化的新文本框--jtf

jtf.setHorizontalAlignment(JTextField.RIGHT);//设置水平对齐方式:居右对齐

JButton data0 = new JButton("0");

JButton data1 = new JButton("1");

JButton data2 = new JButton("2");

JButton data3 = new JButton("3");

JButton data4 = new JButton("4");

JButton data5 = new JButton("5");

JButton data6 = new JButton("6");

JButton data7 = new JButton("7");

JButton data8 = new JButton("8");

JButton data9 = new JButton("9");

JButton point = new JButton(".");

JButton equ = new JButton("=");

JButton plus = new JButton("+");

JButton minus = new JButton("-");

JButton mtp = new JButton("*");

JButton dvd = new JButton("/");

JButton sqr = new JButton("sqrt");

JButton root = new JButton("x^2");

JButton tg = new JButton("退格");

JButton ql = new JButton("清零");

JPanel jp = new JPanel(); //新建JPanel面板--jp

jp.setLayout(new GridLayout(4,5,5,5));//新建网格布局管理器(行数,列数,组件间的水平垂直间距)

jp.add(data7);

jp.add(data8);

jp.add(data9);

jp.add(plus);

jp.add(sqr);

jp.add(data4);

jp.add(data5);

jp.add(data6);

jp.add(minus);

jp.add(root);

jp.add(data1);

jp.add(data2);

jp.add(data3);

jp.add(mtp);

jp.add(ql);

jp.add(data0);

jp.add(point);

jp.add(equ);

jp.add(dvd);

jp.add(tg);

c.add(jtf);//将文本框jtf添加到顶级容器c中

c.add(jp);//将JPanel面板jp添加到顶级容器c中

setSize(400,300);

setTitle("计算器");

setVisible(true);

setResizable(false);//窗体大小由程序员决定,用户不能自由改变大小

setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

/*

* *********************************************************

*

相关计算功能的实现

* *********************************************************

* */

data0.addActionListener(new ActionListener(){//数字0的输入

public void actionPerformed(ActionEvent arg0){

if(jtf.getText().equals("0")){//将按钮值与0作比较

jtf.requestFocus();//把输入焦点放在调用这个方法的控件上(即把光标放在文本框jtf里)

}

else{

String str = jtf.getText();//取得当前按钮的按钮值

jtf.setText(str+"0"); //将文本内容后加上字符0

}

}

});

data1.addActionListener(new ActionListener(){//数字1的输入

public void actionPerformed(ActionEvent arg0){

if(jtf.getText().equals("0")){//将按钮值与0作比较

jtf.setText("");//将文本框初始化为空

jtf.setText("1");//将文本框内容置为 1

jtf.requestFocus();//把输入焦点放在调用这个方法的控件上(即把光标放在文本框jtf里)

}

else{

String str = jtf.getText();//取得当前按钮的按钮值

jtf.setText(str+"1"); //将文本内容后加上字符1

}

}

});

data2.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent arg0){

if(jtf.getText().equals("0")){

jtf.setText("");

jtf.setText("2");

jtf.requestFocus();

}

else{

String str = jtf.getText();

jtf.setText(str+"2");

}

}

});

data3.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent arg0){

if(jtf.getText().equals("0")){

jtf.setText("");

jtf.setText("3");

jtf.requestFocus();

}

else{

String str = jtf.getText();

jtf.setText(str+"3");

}

}

});

data4.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent arg0){

if(jtf.getText().equals("0")){

jtf.setText("");

jtf.setText("4");

jtf.requestFocus();

}

else{

String str = jtf.getText();

jtf.setText(str+"4");

}

}

});

data5.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent arg0){

if(jtf.getText().equals("0")){

jtf.setText("");

jtf.setText("5");

jtf.requestFocus();

}

else{

String str = jtf.getText();

jtf.setText(str+"5");

}

}

});

data6.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent arg0){

if(jtf.getText().equals("0")){

jtf.setText("");

jtf.setText("6");

jtf.requestFocus();

}

else{

String str = jtf.getText();

jtf.setText(str+"6");

}

}

});

data7.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent arg0){

if(jtf.getText().equals("0")){

jtf.setText("");

jtf.setText("7");

jtf.requestFocus();

}

else{

String str = jtf.getText();

jtf.setText(str+"7");

}

}

});

data8.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent arg0){

if(jtf.getText().equals("0")){

jtf.setText("");

jtf.setText("8");

jtf.requestFocus();

}

else{

String str = jtf.getText();

jtf.setText(str+"8");

}

}

});

data9.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent arg0){

if(jtf.getText().equals("0")){

jtf.setText("");

jtf.setText("9");

jtf.requestFocus();

}

else{

String str = jtf.getText();

jtf.setText(str+"9");

}

}

});

point.addActionListener(new ActionListener(){ //点号的输入

public void actionPerformed(ActionEvent arg0){

if(jtf.getText().equals("0")){

jtf.setText("");

jtf.setText(".");

jtf.requestFocus();

}

else{

String str = jtf.getText();

jtf.setText(str+".");

}

}

});

plus.addActionListener(new ActionListener(){ //+号的输入

public void actionPerformed(ActionEvent arg0){

if(jtf.getText().equals("0")){

jtf.setText("");

jtf.setText("+");

jtf.requestFocus();

}

else{

String str = jtf.getText();

jtf.setText(str+"+");

}

}

});

minus.addActionListener(new ActionListener(){ //-号的输入

public void actionPerformed(ActionEvent arg0){

if(jtf.getText().equals("0")){

jtf.setText("");

jtf.setText("-");

jtf.requestFocus();

}

else{

String str = jtf.getText();

jtf.setText(str+"-");

}

}

});

mtp.addActionListener(new ActionListener(){ //*号的输入

public void actionPerformed(ActionEvent arg0){

if(jtf.getText().equals("0")){

jtf.setText("");

jtf.setText("*");

jtf.requestFocus();

}

else{

String str = jtf.getText();

jtf.setText(str+"*");

}

}

});

dvd.addActionListener(new ActionListener(){ //除号的输入

public void actionPerformed(ActionEvent arg0){

if(jtf.getText().equals("0")){

jtf.setText("");

jtf.setText("/");

jtf.requestFocus();

}

else{

String str = jtf.getText();

jtf.setText(str+"/");

}

}

});

//【**退格功能如下**】

tg.addActionListener(new ActionListener(){//监听退格键

public void actionPerformed(ActionEvent arg0){//处理退格键被按下的事件

String text = jtf.getText();

int i = text.length();

if(i>0){

text = text.substring(0,i-1);//去掉最后一个字符

if (text.length() == 0) {// 如果文本没有了内容,则初始化计算器的各种值

jtf.setText("0");

} else { // 显示新的文本

jtf.setText(text);

}

}

}

});

//【**清零功能如下**】

ql.addActionListener(new ActionListener(){//监听清零键

public void actionPerformed(ActionEvent e) {

jtf.setText("0");//将文本框置为0(清零功能)

}

});

//【**平方功能如下**】

root.addActionListener(new ActionListener(){//监听root键

public void actionPerformed(ActionEvent e){//root键被按事件

String i = jtf.getText();

Double j = Double.parseDouble(i);//将字符串i转换成对应的double类型的数值

double ans = j*j; //求平方

String answer =String.valueOf(ans);//将int型数据转换成String类型

jtf.setText(answer);//将文本框设置为平方后的结果

}

});

//【**开方功能如下**】

sqr.addActionListener(new ActionListener(){//监听sqrt键

public void actionPerformed(ActionEvent e){//sqrt键被按事件

String i = jtf.getText();

Double j = Double.parseDouble(i);//将字符串转换成对应的double类型的数值

double ans = (double)Math.sqrt(j);//求开方

String answer = String.valueOf(ans);//将double型数据转换成String类型

jtf.setText(answer);//将文本框设置为开方后的结果

}

});

//【等号实现 加减乘除 功能】

equ.addActionListener(new ActionListener(){ //监听 “等号” 按键

public void actionPerformed(ActionEvent arg0){//处理“等号” 按键被按下事件

//【**加法运算**】

if(jtf.getText().indexOf("+")!= -1){

//将字符串分割为子字符串,然后将结果作为字符串数组返回

String[] s = jtf.getText().split("[+]");//转义字符,要用"[+]"或者"\+"

Double d1 = Double.parseDouble(s[0]);//返回一个指定字符串表示的double值

Double d2 = Double.parseDouble(s[1]);

double ans = d1 + d2;

String answer = String.valueOf(ans);//将结果转换为字符串

jtf.setText(answer);//将加法运算的结果以字符串形式在文本框中显示

}

//【**减法运算**】

else if(jtf.getText().indexOf("-")!= -1){

String[] s = jtf.getText().split("-");

jtf.setText("");

Double d1 = Double.parseDouble(s[0]);

Double d2 = Double.parseDouble(s[1]);

double ans = d1-d2;

String answer =String.valueOf(ans);

jtf.setText(answer);

}

//【**乘法运算**】

else if(jtf.getText().indexOf("*")!= -1){

String[] s = jtf.getText().split("[*]");//*是转义字符,要用"[*]",或者"\*"

jtf.setText("");

Double d1 = Double.parseDouble(s[0]);

Double d2 = Double.parseDouble(s[1]);

double ans = d1*d2;

String answer =String.valueOf(ans);

jtf.setText(answer);

}

//【**除法运算**】

else if(jtf.getText().indexOf("/")!= -1){

String[] s = jtf.getText().split("/");

jtf.setText("");

Double d1 = Double.parseDouble(s[0]);

Double d2 = Double.parseDouble(s[1]);

double ans = d1/d2;

String answer =String.valueOf(ans);

jtf.setText(answer);

}

else{

jtf.setText("请选择要进行的运算");

}

}

});

}

public static void main(String[] args) {

new Caculator();

}

}

总结:

1.掌握基本的GUI添加按钮、文本框的方法

2.掌握字符串的处理,这里用到了indexOf()、split()等方法

3.注意Java中遇到的转义字符。

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

Java实现简单的图形界面计算器 前言 因为这两天我们的Java实验课程需要做两个小的图形化界面,其中就有一个图形界面计算器,所以稍微花了点时间做了一个,同时复习了一下Java的基础内容和GUI编程。因为代码中的注释特别详细,所以这里就不讲解怎么实现的了。 代码 package zuoye; import javax.swing.*; import java.awt.*; import java.awt.event.... 阅读详情

相关推荐

Java实现图形化计算器(支持括号、开平方)

Java实现图形化计算器(支持括号、开平方) Java实习作业,实现一个图形化计算器,正好赶上周末作业不多就写了一个计算器。功能不是特别全,但是能满足一些最基本的需求(比如小学三年级及以下的数学题,,,也不一定能算对,,,)(手动滑稽)。代码注释写的比较详尽,就不多说赘述了。目前时间及能力有限,后续准备添加更多功能。 代码中可(ken)能(ding)还有bug,欢迎测试,若发现bug者计算有误的...

猪猪侠的Laser_ Cannon 5862

java图形界面AWT编写计算器

主要为大家详细介绍了基于java语言下图界面AWT编写计算器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

Java图形界面计算器项目设计实践

本文还有配套的精品资源,点击获取 简介:本项目通过创建名为"calc"的Java图形界面计算器,模拟Windows XP计算器的功能。计算器分为普通型和科学型两个版本,使用Java语言实现跨平台的计算器应用程序。项目包括Java编程基础、图形用户界面设计、事件驱动编程等多个方面。通过源代码编写、编译、打包等步骤,最终完成具备基础及高级数学计算功能的应用程序。 1....

weixin_30765637的博客 1392

简单计算器 及GridLayout布局

1编写Application程序,在Frame中加入80个按钮,分20行4列,用GridLayout布局方式,按钮背景为黄色(Color.yellow),按钮文字颜色为红色(Color.red)。 2.设计一个简单计算器,如下图所示。在“操作数”标签右侧的两个文本框输入操作数,当单击操作符+,-,×,÷按钮时,对两个操作数进行运算并将结果填入到“结果”标签右侧的文本框中。

Java GUI】用java实现简单计算器的制作 项目(一)

3,设置窗口的各种按钮(需添加数字1~9,小数点,运算符号,括号,等号,清除删除键等等),并往相应按钮中添加相应字符,便于向用户展示相字符的作用(此处不含按钮监听事件),同时也可以优化按钮设置如数字0~9用同一个颜色,运算符用一个颜色,等号用为一颜色用于区分,关于按钮布局可以模仿微软计算器中的布局3:由于存储字符串时使用的是栈,所以可以同时实现括号匹配问题的判断,某些错误表达式输入的限制如两个运算符不能相邻输入 :(1+/2)该表达式就是错误的,此时只需要在输入前查看栈顶元素并与输入的元素进行判断即可。

m0_72091619的博客 5900

Java图形界面计算器

利用 Java 开发一个可以进行简单的四则运算的图形化计算器,会使用到 Java Swing 图形组件进行开发。

是微风,是晚霞,是无可替代 2693

JAVA—GUI编程设计实现“简单的计算器

设计内容:设计一个图形界面(GUI)的计算器应用程序,完成简单的算术运算、 设计要求:设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算。且有小数点、正负号、求倒数、退格和清零功能。 设计效果: 键钮含义: C 清零, D 求导数, √ 求平方根, % 求余, <<< 退格, (+/-) 正负号 +-*...

qq_40615021的博客 1万+

java简单计算器开发GUI图形化界面设计与实现(项目源码+课程设计报告)

JAVA 程序设计是计算机专业本科生的必修专业主干课程,授课对象为计算 机科学与技术专业、数字媒体技术、信息安全专业等相关专业的本科生。 课程全面、系统地介绍 JAVA 语言的基本知识及程序设计技术,使学生掌握 Java 语言的语法、数据类型、流程控制等基本知识和面向对象程序设计思想的 Java 实现;了解 Java 常用的系统类;学习异常处理、线程、图形用户界面设计、 网络通信等内容。使学生的专业知识进一步完善和丰富,为将来的开发和研究工 作打下一定的基础。 ...

weixin_40228600的博客 2950

计算器界面布局JAVA_用JAVA写的一个简单的图形界面计算器

/*** Created by YunFeng on 2014/12/6 0009.* Student Number:* Teacher:Yongfeng Huang* University:DHU*Java's homework of No,7 weekend;*/import java.awt.*;import javax.swing.*;importjava.awt.event.Actio...

weixin_42135754的博客 754

Java语言实现可简易四则运算的计算器

Java语言实现可简易四则运算的计算器 使用的算法: 基于双栈的表达式求值算法 双栈实现表达式的求值是使用栈的一个经典例子,它使用一个栈来保存运算符,另外一个栈来保存操作数。 算数表达式由括号、运算符和操作数组成,双栈求值实现过程如下: 1、将操作数压入操作数栈 2、若是运算符则比较运算符栈顶元素和该运算符的优先级。若前者优先级高,则运算符栈弹出一个运算符,操作数栈弹出两个操作数并进行对应运算,得到结果压入操作数栈;若后者优先级高,则直接压入运算符栈;若两者优先级相等,直接弹出运算符栈顶元素。 4、最终

m0_47995646的博客 5612

JAVA 简单练习——简单计算器

java实现简单计算器,蓝桥实验

liuluan03161009的博客 429

Java Swing简易的计算器

1.编写程序,创建如下图所示的图形界面。(要求实现功能) 最终效果图: 源代码: import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; import java.awt.GridLayout; import java.awt.TextField; import java.awt.event.Actio...

Ich/liebe/dich的编程せかい 1228

Java课程设计】【图形界面程序】【计算器

什么是ActiveMQ?ActiveMQ服务器宕机怎么办?丢消息怎么办?持久化消息非常慢怎么办?消息的不均匀消费怎么办?死信队列怎么办?ActiveMQ中的消息重发时间间隔和重发次数吗?

2401_85379602的博客 1173

Java实现图形界面计算器

Java制作简陋计算器

weixin_53594467的博客 1385

java图形计算器_Java实现图形化计算器

package java计算器;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Stack;import javax.swing.*;@SuppressWarnings("serial")public class Main extend...

weixin_33270404的博客 330

Java实现简单计算器

实训题 8:简单计算器 一 项目说明 实训目的:掌握 Java GUI 开发中的布局管理和事件处理机制。 实训要求:(1)要使用 java 的 GUI 设计出计算器界面。(2)通过界面按钮,可以实现整数浮点数的四则运算,并能将结果显示在界面中。(3)计算可以有小数点,和正负整数的计算。(4)要有清零功能。 二 类设计 中缀表达式的计算solution(String str) 用来中算后缀表达...

dwjdj的博客 2万+

Java图形用户界面设计—加法计算器

2. 编程程序,设计并实现下图所示的加法计算器,并通过extends WindowAdapter类实现窗口的关闭。

m0_63571971的博客 1049

Java图形界面计算器实战教程

本文还有配套的精品资源,点击获取 简介:开发Java小型计算器程序是面向对象编程和GUI设计的初学者练习,使用Java Swing库构建基础图形用户界面。程序涉及多个主要类,包括主类Calculator、布局管理类CalculatorPanel和计算逻辑类CalculationEngine。通过实现计算器,开发者可以练习GUI设计、事件处理和面向对象编程,同时也可以扩展更多...

weixin_42583683的博客 1284
上一篇: java calendar 转换_转——JAVA中calendar,date,string 的相互转换和详细用法
下一篇: java写入log文件内容_java实现将日志信息写入TxT
勃对立
博客等级 码龄6年 38粉丝 581原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值