java图形界面计算器_java实现图形化界面计算器
本文实例为大家分享了java实现图形化界面计算器的具体代码,供大家参考,具体内容如下
最终效果图:
项目流程:
第一步:实现图形化界面(添加计算器的 Button 和 用于显示输入数字、输出结果的JTextField等)
第二步:给按钮和文本框添加鼠标监听事件。
第三步:实现加减乘除、开方、平方、清零和退格功能。
开方运算:
平方运算:
加法运算:
减法运算:
乘法运算:
除法运算:
完整项目代码:
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实现图形化界面计算器相关推荐
- 一脸懵逼学习oracle(图形化界面操作---》PLSQL图形化界面)
一脸懵逼学习oracle(图形化界面操作--->PLSQL图形化界面) 1:经过几天的折腾,终于将oracle安装成功,创建用户,授权等等操作,接下来就安安心心学习oracle: 安装好PLSQ ...
- java带图形用户的聊天_java:带有图形化界面,可以发送和接收的聊天工具
/** 根据UDP协议,设计一个聊天程序,可以发送和接收,并有相应的图形化界面 */ import java.net.*; import java.awt.*; import java.awt.eve ...
- java 高级 图形化界面_java高级图形化界面
java.awt.event.WindowAdapter 是一个接口 学生的答案: C 标准答案: C 该题分数:4.0 学生得分: 4.0 分 9. 在基于 Swing 的图形用户界面设计中,面板属 ...
- xshell支持图形_Xshell打不开图形化界面,或许该这样做!
原标题:Xshell打不开图形化界面,或许该这样做! Xshell是一款优秀的安全终端模拟软件,而且可以配合其他一些模拟软件来使用,例如Xftp.Xmanager.Xstart等,各个软件相互配合,能 ...
- RHEL6.4启动一直在加载界面,无法进入图形化界面的解决办法
在下在上午的时候将我另一个机器上面的虚拟机拷贝到了我现在用的机器上,发现rhel6.4启动加载的时候一直开在这个界面: 如图: 就一直卡在这个界面了. 我用ctrl+shift+f1一看: 哎,有点迷 ...
- php图形界面框架,python GUI 图形化界面框架的选择
根据网上资料的显示目前流行的开源python GUI有以下几个 (以下GUI框架适用于应用的GUI,如果采用WEB方式,UI可使用h5相关标签即可,也可以用框架.): PyQt 的介绍 : http: ...
- python使用界面-如何使用python图形化界面wxPython
wxPython的安装: pip install wxPython 同时还安装了两个依赖包:six和pillow 简单使用: 变量app就是我们的程序. 其次一定要注意大小写,尤其是Show的S im ...
- java之图形化界面(GUI)
一.概述 用户与计算机进行交换的方式有两种: GLI:Command lin User Interface(命令行用户接口),也就是常见的dos窗口,它需要记住一些常用的命令,操作不直观方便. GUI ...
- 如何远程进入linux7.2图形界面,CentOS7.2安装VNC,让Windows远程连接CentOS 7.2 图形化界面...
需求及说明 开发老大突然心血来潮,让实现在windows下通过vnc实现连接到CentOS系统的图形化界面,这里实践CentOS7.2 下安装VNC,让Windows远程桌面Linux解决了不少问题, ...
最新文章
- jq苹果手机全屏下点击无效果_看剧、下视频、看小说,这一个app就可以~
- php9宫格抽奖程序_php抽奖算法(适用于九宫格、大转盘)
- 吴恩达神经网络1-2-2_图神经网络进行药物发现-第2部分
- 简单的C++线程类实现, windows平台
- 学pyqt5之前需要学python吗_快速学习pyqt5(1)--入门
- [转]Redis内部数据结构详解-sds
- js 表单设计器_准备迎接Vue3,使用Vue Composition API生成干净可扩展的表单
- 软件项目要写哪些文档
- Alibaba之MySQL宝典_Alibaba之MySQL宝典流出!极致经典,堪称行业天花板
- python mobilenetssd android_MobileNetV2-SSDLite运行
- 报错 ERROR in static/js/vendor.b3f56e9e0cd56988d890.js from UglifyJs
- SpringMVC框架学习上篇
- 计量经济学 联合假设检验 F统计量
- nba2k20手游修改器服务器已到,NBA2K20修改器
- 十大推荐提交的安卓市场
- 计算机科学与技术没落,这七所985一个A+学科都没有评上?有点尴尬了
- Python:flake8_E501_E128_E125
- TCP 滑动窗口的简介
- 去chrome视频广告插件
- 手机u盘显示服务器连接超时,U盘插到手机里却没反应?这几种情况你知道么?...