java使用window builder图形界面开发简易计算器
界面效果:

/**
*
*/
package calculator;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.GridLayout;
import javax.swing.JLabel;
import java.awt.GridBagLayout;
import javax.swing.JTextField;
import java.awt.GridBagConstraints;
import java.awt.FlowLayout;
import javax.swing.SpringLayout;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Font;
import javax.swing.JSpinner;
import javax.swing.JFormattedTextField;
import javax.swing.JCheckBox;
import javax.swing.JTable;
import javax.swing.JProgressBar;
import javax.swing.JTextArea;
import java.awt.Color;
/**
* @author Ocean
*
*/
public class Calc_Main extends JFrame {
private JTextField textField;
private JTable table;
String s = "";// 显示算式
long[] num = new long[100];// 储存运算数据
char[] b = new char[100];// 储存运算符
int i = 0;// 输入运算数据和运算符是给数组计数
int c;// 计算结果时计数
long jieguo = 0;// 计算结果
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Calc_Main frame = new Calc_Main();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* 构造方法
* Create the frame.
*/
public Calc_Main() {
setFont(new Font("Dialog", Font.PLAIN, 12));
setTitle("计算器");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(800, 300, 382, 494);
getContentPane().setLayout(null);
textField = new JTextField();
textField.setForeground(new Color(102, 51, 255));
textField.setFont(new Font("宋体", Font.PLAIN, 18));
textField.setBounds(10, 10, 344, 50);
getContentPane().add(textField);
textField.setColumns(10);
JButton btnNewButton = new JButton("C");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
s="";
textField.setText(s);//清空文本框
for(c=0;c<100;c++)
{
num[c]=0;//清空运算数据
b[c]=0;//清空运算符
}
i=0;
c=0;
jieguo=0;
}
});
btnNewButton.setBounds(20, 99, 65, 40);
getContentPane().add(btnNewButton);
JButton button = new JButton("/");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
s=s+"/";
textField.setText(s);//在文本框中显示相应运算符
b[i]='/';
i++; //输入运算符号后给数组地址+1存放后面的输入
}
});
button.setBounds(107, 99, 65, 40);
getContentPane().add(button);
JButton button_1 = new JButton("*");
button_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
s=s+"*";
textField.setText(s);//在文本框中显示相应运算符
b[i]='*';
i++;
}
});
button_1.setBounds(189, 99, 65, 40);
getContentPane().add(button_1);
JButton button_2 = new JButton("-");
button_2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
s=s+"-";
textField.setText(s);//在文本框中显示相应运算符
b[i]='-';
i++;
}
});
button_2.setBounds(276, 99, 65, 40);
getContentPane().add(button_2);
JButton button_3 = new JButton("1");
button_3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
s += "1";
textField.setText(s);//在文本框中显示相应数字
num[i] = num[i] * 10 + 1;
}
});
button_3.setBounds(20, 170, 65, 40);
getContentPane().add(button_3);
JButton button_4 = new JButton("2");
button_4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
s += "2";
textField.setText(s);//在文本框中显示相应数字
num[i] = num[i] * 10 + 2;
}
});
button_4.setBounds(107, 170, 65, 40);
getContentPane().add(button_4);
JButton button_5 = new JButton("3");
button_5.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
s += "3";
textField.setText(s);//在文本框中显示相应数字
num[i] = num[i] * 10 + 3;
}
});
button_5.setBounds(189, 170, 65, 40);
getContentPane().add(button_5);
JButton button_6 = new JButton("+");
button_6.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
s=s+"+";
textField.setText(s);//在文本框中显示相应运算符
b[i]='+';
i++;
}
});
button_6.setBounds(276, 170, 65, 116);
getContentPane().add(button_6);
JButton button_7 = new JButton("4");
button_7.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
s += "4";
textField.setText(s);//在文本框中显示相应数字
num[i] = num[i] * 10 + 4;
}
});
button_7.setBounds(20, 246, 65, 40);
getContentPane().add(button_7);
JButton button_8 = new JButton("5");
button_8.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
s += "5";
textField.setText(s);//在文本框中显示相应数字
num[i] = num[i] * 10 + 5;
}
});
button_8.setBounds(107, 246, 65, 40);
getContentPane().add(button_8);
JButton button_9 = new JButton("6");
button_9.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
s += "6";
textField.setText(s);//在文本框中显示相应数字
num[i] = num[i] * 10 + 6;
}
});
button_9.setBounds(189, 246, 65, 40);
getContentPane().add(button_9);
JButton button_11 = new JButton("7");
button_11.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
s += "7";
textField.setText(s);//在文本框中显示相应数字
num[i] = num[i] * 10 + 7;
}
});
button_11.setBounds(20, 315, 65, 40);
getContentPane().add(button_11);
JButton button_12 = new JButton("8");
button_12.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
s += "8";
textField.setText(s);//在文本框中显示相应数字
num[i] = num[i] * 10 + 8;
}
});
button_12.setBounds(107, 315, 65, 40);
getContentPane().add(button_12);
JButton button_13 = new JButton("9");
button_13.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
s += "9";
textField.setText(s);//在文本框中显示相应数字
num[i] = num[i] * 10 + 9;
}
});
button_13.setBounds(189, 315, 65, 40);
getContentPane().add(button_13);
JButton button_14 = new JButton("=");
button_14.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
switch(b[0])//为了方便用循环来计算,我想到的是先把第一次计算提出来
{
case '+':
{
jieguo=num[0]+num[1];
break;
}
case '-':
{
jieguo=num[0]-num[1];
break;
}
case '*':
{
jieguo=num[0]*num[1];
break;
}
case '/':
{
jieguo=num[0]/num[1];
break;
}
}
c++;
// 一个算式多次运算
for(c=1;c<i;c++)
{
switch(b[c])
{
case '+':
{
jieguo=jieguo+num[c+1];
break;
}
case '-':
{
jieguo=jieguo-num[c+1];
break;
}
case '*':
{
jieguo=jieguo*num[c+1];
break;
}
case '/':
{
jieguo=jieguo/num[c+1];
break;
}
}
}
textField.setText(String.valueOf(jieguo));//.setText()的参数需要String,所以用String.valueOf()将long转换为String
}
});
button_14.setBounds(276, 315, 65, 104);
getContentPane().add(button_14);
JButton button_15 = new JButton("0");
button_15.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
s += "0";
textField.setText(s);//在文本框中显示相应数字
num[i] = num[i] * 10 + 0;
}
});
button_15.setBounds(20, 379, 152, 40);
getContentPane().add(button_15);
JButton button_17 = new JButton(".");
button_17.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//还没想出来怎么整,有知道的大佬还请多指教``
}
});
button_17.setBounds(189, 379, 65, 40);
getContentPane().add(button_17);
JLabel label = new JLabel("注意本计算机没有计算优先级(一律从左到右计算)");
label.setBounds(22, 430, 321, 15);
getContentPane().add(label);
}
}
java使用window builder图形界面开发简易计算器的更多相关文章
- Java图形界面开发—简易登录注册小程序
登录注册小代码,将学过的一些小知识融合在一起进行了使用,加深印象.本例中如果有注释不详细的地方,详见其它博客. Java程序操作数据库SQLserver详解 功能介绍:简单的登录注册系统,使用了数据库 ...
- Java图形界面开发—简易记事本
在学习了Java事件之后,自己写了一个极其简单的记事本.用到了MenuBar,Menu,MenuITem等控件,事件包括ActionListener以及KeyListener. 代码如下: ...
- Java 图形界面开发--图文并茂建立学生管理系统
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/50932501 冷血之心的博客) 图形用户界面(Graphics U ...
- JAVA与图形界面开发(Applet应用程序、AWT库、Swing)
Applet 1)简单说,Applet就是嵌入到网页中的小程序,Java代码. 2)编写Applet程序,要继承JApplet类,并根据自己需要覆写相关方法(init.start.stop.destr ...
- Java GUI图形界面开发工具
Applet 应用程序 一种可以在 Web 浏览器中执行的小程序,扩展了浏览器中的网页功能. 缺: 1.需要下载 Applet 及其相关文件 2.Applet 的功能是受限制的 优: 3.无需 ...
- Java图形界面学习---------简易登录界面
/** * @author Administrator * Java图形界面学习---------简易登录界面 * date:2015/10/31 */ import java.awt.BorderL ...
- JAVA 图形界面开发基础详解
与C的win32一样,JAVA也有自己的图形界面开发,将在此篇博客中对基础部分进行讲解. 1.Java提供的图形界面类有哪些? Java提供了两套图形界面 (1)AWT组建(基础) AWT组件是jdk ...
- Java Swing 图形界面开发(目录)
Java Swing 图形界面开发(目录) 2017年05月30日 23:50:42 阅读数:5228 本文链接: http://blog.csdn.net/xietansheng/article/d ...
- Java Swing图形界面开发
本文转自xietansheng的CSDN博客内容,这是自己见过的最通俗易懂.最适合快速上手做Java GUI开发的教程了,这里整合一下作为自己以后复习的笔记: 原文地址:https://blog.cs ...
随机推荐
- 绕过XSS过滤姿势总结
0x01 弹窗关键字检测绕过 基本WAF都针对常用的弹窗函数做了拦截,如alert().prompt().confirm(),另外还有代码执行函数eval(),想要绕过去也比较简单,我们以alert( ...
- 从前端到后端实现弹幕的过程(jsp/Jquery.barrager.js)
Jquery.barrager.js插件,可以去网上下载!下载完后,就把下载文件中的js文件.css文件.图片文件.等等等文件全部拷贝到你们自己的项目中去,千万别拷贝漏了,如果你怕拷贝漏了什么,那就把 ...
- DLL/OCX文件的注册与数据执行保护DEP
注册/反注册dll或ocx文件时,无论是用regsvr32还是DllRegisterServer/DllUnregisterServer,可能会遇到[内存位置访问无效]的问题: 此时把操作系统的数据执 ...
- C - Dr. Evil Underscores CodeForces - 1285D 二进制
题目大意:n个数,任意整数x对这n个数取异或值,然后使最大值最小. 思路:数据范围最大为pow(2,30);所以考虑二进制的话,最多有30位.对于某一位d,然后考虑数组v中每一个元素的d为是0还是1, ...
- C++学习--编译优化
常量折叠 把常量表达式的值求出来作为常量嵌在最终生成的代码中. 疑问:对于一个很复杂的常量表达式,编译器会算出结果再编译吗?亦或者是把这个表达式完全翻译成机器码,最终留给程序去解决? 分情况: 涉及的 ...
- 深入浅出node.js游戏服务器开发1——基础架构与框架介绍
2013年04月19日 14:09:37 MJiao 阅读数:4614 深入浅出node.js游戏服务器开发1——基础架构与框架介绍 游戏服务器概述 没开发过游戏的人会觉得游戏服务器是很神秘的 ...
- Linux编辑利器-Vim
在大学时代,Vim 的大名就已如雷贯耳,但由于它陡峭的学习曲线,一直望而却步.等真正开始学习之后,发现并没有想象中的复杂,也没有所谓的瓶颈,只要在实际写代码中强迫自己使用就可以了,无形中就会形成习惯. ...
- PHP函数:json_last_error
json_last_error() - 返回 JSON 编码解码时最后发生的错误.. 说明: json_last_error ( void ) : int 参数: 无 返回值: 返回一个整型(int ...
- Vue【你知道吗?】
前言 Vue的由来 Vue最早发布于2014年左右,作者是美中国学生尤雨溪.Vue 的定位就是为前端开发提供一个低门槛,高效率,但同时又能够伴随用户成长的框架 尤雨溪谈Vue.js :缔造自由与真我 ...
- Mac安装aws-cli全过程,通过命令行上传文件到aws s3协议服务器
第一次使用aws,首先查询了各种资料,我第一步需要做的是安装aws-cli,而安装aws-cli之前需要安装python3,当然你安装python3之前你还需要安装homebrew,当然我正在安装的过 ...