java计算器 图形用户界面 升级版 v1.02
package com.rgy.entity;
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
@SuppressWarnings("serial")
public class Calculator2 extends JFrame{
// 声明辅助变量
private String str = "0";// 保存显示框中的字符串
private String show_str="";// 保存副显示框中的字符串
private double num_record = 0;// 记录当前数据的值
private int operator = 0;// 记录当前运算符类型
private int count_point=0;// 记录小数点个数,避免反复输入小数点
// 声明并初始化各个组件
private JTextField text_show = new JTextField("0");
private JTextField text_show1 = new JTextField();
private JPanel panel_up = new JPanel();
private JPanel panel_CEandC = new JPanel();
private JPanel panel_keys = new JPanel();
private JButton button_CE = new JButton("CE");
private JButton button_C = new JButton("C");
private JButton button_num0 = new JButton("0");
private JButton button_num1 = new JButton("1");
private JButton button_num2 = new JButton("2");
private JButton button_num3 = new JButton("3");
private JButton button_num4 = new JButton("4");
private JButton button_num5 = new JButton("5");
private JButton button_num6 = new JButton("6");
private JButton button_num7 = new JButton("7");
private JButton button_num8 = new JButton("8");
private JButton button_num9 = new JButton("9");
private JButton button_division = new JButton("/");
private JButton button_multiplication = new JButton("*");
private JButton button_cut = new JButton("-");
private JButton button_add = new JButton("+");
private JButton button_equal = new JButton("=");
private JButton button_point = new JButton(".");
public Calculator2(String s) {
super(s);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
this.setBounds(500,250,270,400);
this.setVisible(true);
//设置显示框
text_show.setHorizontalAlignment(JTextField.RIGHT);
text_show.setFont(new Font("Default", 0, 30));
text_show.setEditable(false);// 不可编辑
text_show1.setHorizontalAlignment(JTextField.RIGHT);
text_show1.setFont(new Font("Default", 0, 16));
text_show1.setEditable(false);
// 设置布局及边框
panel_up.setLayout(new BorderLayout());
button_CE.setBorder(BorderFactory.createRaisedBevelBorder());
button_C.setBorder(BorderFactory.createRaisedBevelBorder());
button_CE.setFont(new Font("Default", 1, 20));
button_C.setFont(new Font("Default", 1, 20));
panel_up.setBorder(BorderFactory.createEtchedBorder ());
panel_CEandC.setLayout(new GridLayout(1, 2, 7, 7));
panel_keys.setLayout(new GridLayout(4, 4, 7, 7));
// 面板的嵌套
panel_up.add(text_show1, BorderLayout.NORTH);
panel_up.add(text_show, BorderLayout.CENTER);
panel_up.add(panel_CEandC, BorderLayout.SOUTH);
this.add(panel_up, BorderLayout.NORTH);
this.add(panel_keys, BorderLayout.CENTER);
//在面板上加入按钮
panel_CEandC.add(button_CE);panel_CEandC.add(button_C);
panel_keys.add(button_num7);panel_keys.add(button_num8);
panel_keys.add(button_num9);panel_keys.add(button_division);
panel_keys.add(button_num4);panel_keys.add(button_num5);
panel_keys.add(button_num6);panel_keys.add(button_multiplication);
panel_keys.add(button_num1);panel_keys.add(button_num2);
panel_keys.add(button_num3);panel_keys.add(button_cut);
panel_keys.add(button_num0);panel_keys.add(button_point);
panel_keys.add(button_equal);panel_keys.add(button_add);
//加入事件(匿名内部类)
button_num0.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (text_show.getText().equals("0")) {
text_show.setText("");
}
str = text_show.getText() + "0";
text_show.setText(str);
}
});
button_num1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (operator != 5) {
if (text_show.getText().equals("0")) {
text_show.setText("");
}
str = text_show.getText() + "1";
text_show.setText(str);
}
else {
setClear();
str = text_show.getText() + "1";
text_show.setText(str);
}
}
});
button_num2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (operator != 5) {
if (text_show.getText().equals("0")) {
text_show.setText("");
}
str = text_show.getText() + "2";
text_show.setText(str);
}
else {
setClear();
str = text_show.getText() + "2";
text_show.setText(str);
}
}
});
button_num3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (operator != 5) {
if (text_show.getText().equals("0")) {
text_show.setText("");
}
str = text_show.getText() + "3";
text_show.setText(str);
}
else {
setClear();
str = text_show.getText() + "3";
text_show.setText(str);
}
}
});
button_num4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (operator != 5) {
if (text_show.getText().equals("0")) {
text_show.setText("");
}
str = text_show.getText() + "4";
text_show.setText(str);
}
else {
setClear();
str = text_show.getText() + "4";
text_show.setText(str);
}
}
});
button_num5.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (operator != 5) {
if (text_show.getText().equals("0")) {
text_show.setText("");
}
str = text_show.getText() + "5";
text_show.setText(str);
}
else {
setClear();
str = text_show.getText() + "5";
text_show.setText(str);
}
}
});
button_num6.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (operator != 5) {
if (text_show.getText().equals("0")) {
text_show.setText("");
}
str = text_show.getText() + "6";
text_show.setText(str);
}
else {
setClear();
str = text_show.getText() + "6";
text_show.setText(str);
}
}
});
button_num7.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (operator != 5) {
if (text_show.getText().equals("0")) {
text_show.setText("");
}
str = text_show.getText() + "7";
text_show.setText(str);
}
else {
setClear();
str = text_show.getText() + "7";
text_show.setText(str);
}
}
});
button_num8.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (operator != 5) {
if (text_show.getText().equals("0")) {
text_show.setText("");
}
str = text_show.getText() + "8";
text_show.setText(str);
}
else {
setClear();
str = text_show.getText() + "8";
text_show.setText(str);
}
}
});
button_num9.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (operator != 5) {
if (text_show.getText().equals("0")) {
text_show.setText("");
}
str = text_show.getText() + "9";
text_show.setText(str);
}
else {
setClear();
str = text_show.getText() + "9";
text_show.setText(str);
}
}
});
button_point.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(count_point==0){
str=text_show.getText()+".";
text_show.setText(str);
count_point++;
}
else{//假设小数点个数超过一个就不再输入小数点
return;
}
}
});
button_C.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {//所有清空,包含数据和运算符
setClear();
text_show.setText("0");
}
});
button_CE.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(operator==5){//对于按过等号的数据。则所有清空
num_record=0;
str="";
text_show.setText("0");
}
else{//没按过等号的从低到高位依次降低位数
if(str.length()!=0){//假设显示框中的数据长度不为0
str=text_show.getText();
str=str.substring(0,str.length()-1);
if(str.length()>1){
text_show.setText(str);
}
else{
str="";
text_show.setText("0");
}
}
}
}
});
button_add.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (str.equals("")) {}
else {
switch (operator) {
case 0:
num_record = Double.parseDouble(str);break;
case 1:
num_record = num_record + Double.parseDouble(str);break;
case 2:
num_record = num_record - Double.parseDouble(str);break;
case 3:
num_record = num_record * Double.parseDouble(str);break;
case 4:
num_record = num_record / Double.parseDouble(str);break;
case 5:break;
}
show_str=show_str+text_show.getText()+"+";
text_show1.setText(show_str);
str="";
text_show.setText("");
operator=1;
}
}
});
button_cut.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(text_show.getText().equals("0")){
if(operator==0){//负号的功能
str="-";
text_show.setText(str);
}
else{
return;
}
}
else{
if (str.equals("")) {}
else {
switch (operator) {
case 0:
num_record = Double.parseDouble(str);break;
case 1:
num_record = num_record + Double.parseDouble(str);break;
case 2:
num_record = num_record - Double.parseDouble(str);break;
case 3:
num_record = num_record * Double.parseDouble(str);break;
case 4:
num_record = num_record / Double.parseDouble(str);break;
case 5:break;
}
show_str=show_str+text_show.getText()+"-";
text_show1.setText(show_str);
str="";
text_show.setText("");
operator=2;
}
}
}
});
button_multiplication.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (str.equals("")) {}
else {
switch (operator) {
case 0:
num_record = Double.parseDouble(str);break;
case 1:
num_record = num_record + Double.parseDouble(str);break;
case 2:
num_record = num_record - Double.parseDouble(str);break;
case 3:
num_record = num_record * Double.parseDouble(str);break;
case 4:
num_record = num_record / Double.parseDouble(str);break;
case 5:break;
}
show_str = show_str + text_show.getText() + "*";
text_show1.setText(show_str);
str="";
text_show.setText("");
operator=3;
}
}
});
button_division.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (str.equals("")) {}
else {
switch (operator) {
case 0:
num_record = Double.parseDouble(str);break;
case 1:
num_record = num_record + Double.parseDouble(str);break;
case 2:
num_record = num_record - Double.parseDouble(str);break;
case 3:
num_record = num_record * Double.parseDouble(str);break;
case 4:
num_record = num_record / Double.parseDouble(str);break;
case 5:break;
}
}
show_str = show_str + text_show.getText()+"/";
text_show1.setText(show_str);
str="";
text_show.setText("");
operator=4;
}
});
button_equal.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (str.equals("")) {}
else {
switch (operator) {
case 0:
num_record = Double.parseDouble(str);break;
case 1:
num_record = num_record + Double.parseDouble(str);break;
case 2:
num_record = num_record - Double.parseDouble(str);break;
case 3:
num_record = num_record * Double.parseDouble(str);break;
case 4:
num_record = num_record / Double.parseDouble(str);break;
case 5:break;
}
}
show_str="";
//输出显示
text_show1.setText("");
if(num_record-(int)num_record==0){
text_show.setText(""+(int)num_record);
}
else{//保留总共15位数字,确保显示框能装下
if((""+num_record).length()>15){
text_show.setText((""+num_record).substring(0,15));
}
else{
text_show.setText(""+num_record);
}
}
operator=5;
}
});
}
public void setClear(){//清除
num_record=0;
operator=0;
count_point=0;
str="";
text_show.setText("");
show_str="";
text_show1.setText("");
}
public static void main(String args[]) {
new Calculator2("计算器v1.02");
}
}
java计算器 图形用户界面 升级版 v1.02的更多相关文章
- java计算器 图形用户界面 精简版
package com.rgy.entity; import java.awt.*; import java.awt.event.*; @SuppressWarnings("serial&q ...
- java GUI(图形用户界面)
GUI Graphical User Interface(图形用户接口). 用图形的方式,来显示计算机操作的界面,这样更方便更直观. CLI Command line User Interface ( ...
- 借助WindowBuilder插件轻松完成JAVA图形用户界面编辑
如果以纯代码的形式进行JAVA的图形用户界面编辑,将是一件非常痛苦的事,博主在学习过程中发现了JAVA GUI编辑神器——WindowBuilder,提供可视化的编辑界面,控件的添加.排版只需使用鼠标 ...
- 【计项02组01号】Java版图形界面计算器
Java版图形界面计算器1.0版本 项目分析[1.0] 组成部分 代码结构 (1)窗口的创建 在<JDK 核心 API>中我们提到,创建一个窗口需要使用 JFrame 类.在本实验中,我们 ...
- java第八节 GUI/图形用户界面
/* *第8讲 GUI/图形用户界面 * AWT的基础知识 * GUI全称是Graphical User Interface,即图形用户界面 * JDK中提供了AWT和Swing两个包,用于GUI程序 ...
- 黑马程序员——【Java基础】——GUI(图形用户界面)
---------- android培训.java培训.期待与您交流! ---------- 一.概述 1.GUI(GraphicalUser Interface):又称图形用户界面,是计算机用户与计 ...
- 抽象窗口工具包AWT (Abstract Window Toolkit) 是 API为Java 程序提供的建立 图形用户界面
抽象窗口工具包AWT (Abstract Window Toolkit) 是 API为Java 程序提供的建立 图形用户界面GUI (Graphics User Interface)工具集,AWT可用 ...
- AWT是Java基础类 (JFC)的一部分,为Java程序提供图形用户界面(GUI)的标准API
抽象窗口工具包 (Abstract Windowing Toolkit) (AWT)是Java的平台独立的窗口系统,图形和用户界面器件工具包. AWT是Java基础类 (JFC)的一部分,为Java程 ...
- Java图形用户界面编程
1.Java图形用户界面编程概述 JavaAPI中提供了两套组件用于支持编写图形用户界面:AWT(抽象窗口包)和Swing 2. 容器(Container):重量级容器和轻量级容器(一个容器可以放置 ...
随机推荐
- linux clamav杀毒软件的安装
一.概述 Linux比其它操作系统更稳定更安全.理论上Linux是有可能被病毒侵害的.但实际上 Linux机器几乎不可能遭受病毒的攻击.所以我这里的问题是为什么要为Linux准备防病毒软件,为了更好理 ...
- xp下对dinput8.dll 游戏键盘输入的模拟 非函数hook
https://www.xuebuyuan.com/833929.html 很多游戏或者3d模拟软件为了更好的支持外设使用directinput作为输入接口调用.那么如果要模拟鼠标或键盘来控制游戏或者 ...
- IOS设计模式第九篇之备忘录模式
版权声明:原创作品,谢绝转载!否则将追究法律责任. 备忘录模式捕获和具体化对象的内部状态.换句话说,它可以节省你的东西后来,这种外部状态可以恢复在不违反封装; 也就是说,私人数据是私有的. 怎么用备忘 ...
- android基础---->WidGet的使用
Widget是一个可以添加在别的应用程序中的”小部件”,我们可以使用自定义的Widget远程控制我们的程序做一些事情.一般用于在桌面上添加一个小部件,现在我们开始小部件的学习. 目录导航: WidGe ...
- MFC onchar()
为什么在CView类中可以对ON_CHAR进行相应,添加消息处理函数onchar就可以了,但是在CDialog中要对ON_CHAR相应,直接添加不行? CView相当于Text控件,你可以在Text控 ...
- linux下的一些操作命令
1.切换到root账号下: su root 输入密码: 2.修改root账号密码: sudo passwd root 输入密码: 3.cat用法: 查看文件内容 cat 文件名 创建文件 ...
- Visual C++ 2010项目在Visual Studio 2013中打开.rc文件提示"undefined keyword or key name: SS_REALSIZECONTROL"解决方法
1.以方式打开.rc文件. 2.删除其中包含SS_REALSIZECONTROL定义的内容. 3.在资源编辑器中打开.rc文件,重新设置Real Size Control的属性(不能在代码编辑器里重新 ...
- ios三张图片组合一张
- (UIImage *)addImage:(UIImage *)image1 toImage:(UIImage *)image2 { UIGraphicsBeginImageContext(imag ...
- jmeter中Implementation中几个选项的区别
在jmeter发送http请求时,Implementation下拉框中有几个选项,如下: 那到底有什么区别呢?发送http请求改用哪种方法呢.百度后查之,没答案.我们还是看官方文档吧.官方文档解释如下 ...
- java代码中实现android背景选择的selector-StateListDrawable的应用
首先定义一个获得StateListDrawable对象的方法: private StateListDrawable addStateDrawable(Context context, int idNo ...