JAVAjavaswing实例-计算器.ppt-PPT精选文档

合集下载

用java代码写的简易计算器(可以实现基本的加减乘除功能)

用java代码写的简易计算器(可以实现基本的加减乘除功能)

⽤java代码写的简易计算器(可以实现基本的加减乘除功能)package A;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import javax.swing.*;public class Calcular3 extends JFrame implements ActionListener,MouseListener{private int m1=0,n=0;//private double m2=0;//运算的数private int flag=0;JFrame f;JPanel p1,p2,p3;JTextField t;JButton b1[]=new JButton[18];String b[]= {"1","2","3","4","5","6","7","8","9","0","清空","退格",".","=","+","-","*","/"};public Calcular3(){f=new JFrame("计算器");t=new JTextField(35);p1=new JPanel();p2=new JPanel();p3=new JPanel();f.setBounds(100, 100, 400, 200);f.add(p1,BorderLayout.NORTH);f.add(p2,BorderLayout.CENTER);f.add(p3,BorderLayout.EAST);p2.setLayout(new GridLayout(5,3));p3.setLayout(new GridLayout(4,1));p1.add(t);for(int i=0;i<14;i++) {b1[i]=new JButton(b[i]);p2.add(b1[i]);b1[i].addActionListener(this);}for(int i=14;i<18;i++) {b1[i]=new JButton(b[i]);p3.add(b1[i]);b1[i].addActionListener(this);}/*for(int i=0;i<18;i++) {b1[i].addActionListener(this);}*/f.setVisible(true);}//实现接⼝的⽅法public void mouseClicked(MouseEvent e) {}public void mousePressed(MouseEvent e) {}public void mouseReleased(MouseEvent e) {}public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}public void actionPerformed(ActionEvent e) {String str="";int i;for(i=0;i<=9;i++) {if(e.getSource()==b1[i]) {if(i==9) {n=n*10;}else {n=n*10+i+1;}str=String.valueOf(n);//整形n转换成字符串strt.setText(str);//显⽰到⽂本框上}}for(i=14;i<18;i++) {//+、-、*、/if(e.getSource()==b1[i]) {//匹配运算符m1=Integer.parseInt(t.getText());if(flag==15) {m2=m1+m2;}else if(flag==16) {m2=m1-m2;}else if(flag==17) {m2=m1*m2;}else if(flag==18) {m2=m1/m2;}else m2=m1;//若⽆连续的运算符运算,保存当前数据到m2 if(i==14) flag=15;else if(i==15) flag=16;else if(i==16) flag=17;else flag=18;str=String.valueOf(b[i]);t.setText(str);//显⽰到⽂本框上n=0;//还原,记录下次数据break;//找到匹配数据退出循环}}if(e.getSource()==b1[13]) {//=m1=Integer.parseInt(t.getText());if(flag==15) {m2=m2+m1;}else if(flag==16) {m2=m2-m1;}else if(flag==17) {m2=m2*m1;}else if(flag==18) {m2=m2/m1;}else m2=m1;str=String.valueOf(m2);t.setText(str);//显⽰到⽂本框上n=0;//还原,记录下次数据flag=0;//flag还原0,表明没有未处理的运算符}if(e.getSource()==b1[10]) {//各变量变为0 清空m1=0;m2=0;flag=0;n=0;t.setText("0");//显⽰到⽂本框上}if(e.getSource()==b1[11]) {//退格m1=(int)(Double.parseDouble(t.getText())/10);n=m1;str=String.valueOf(m1);t.setText(str);}if(e.getSource()==b1[12]) {//⼩数点m1=Integer.parseInt(t.getText());str=String.valueOf(m1+b[12]);t.setText(str);//显⽰到⽂本框上int j=0;for(i=0;i<=9;i++) {if(e.getSource()==b1[i]) {j++;m2=Math.pow(0.1, j)*Integer.parseInt(b[i]);str=String.valueOf(m1+m2);t.setText(str);//显⽰到⽂本框上}}}}//主函数public static void main(String[] args) {new Calcular3();}}。

javaSWING讲解PPT课件

javaSWING讲解PPT课件
• 东(EAST) • 西(WEST) • 南(SOUTH) • 北(NORTH) • 中(CENTER)五个区域,组件只能被添加到指定的区域 • 如不指定组件的加入部位,则默认加入到CENTER区。 • 每个区域只能加入一个组件,如加入多个,则先前加入的会被覆盖。
第19页/共40页
BorderLayout布局管理器 • BorderLayout型布局容器尺寸缩放原则:
说明
将项添加至项的列表
返回指定索引位置的列表项
返回列表(作为对象)中的项数 将当前选择的项作为一个对象返回
返回当前选择项的索引位置
第15页/共40页
布局管理器
• 用户界面上的GUI组件可以按照一定的格式布局 例如水平排列,或按网格方式排列
• 布局管理器类是一组类,它 • 实现 java.AW youtManage r 接口 • 帮助在容器中放置组件
位置属性,如果试图使用Java语言提供的setLocation(),setSize(),setBounds()等方法,则都会被 布局管理器覆盖。 • 如果用户确实需要亲自设置组件大小或位置,则应取消该容器的布局管理器,方法为:
• setLayout(null)
第22页/共40页
课堂练习
第23页/共40页
SWING容器组件1
Swing 应用程序
主窗口
内容面板
第3页/共40页
顶层容器(每个应用 程序中至少有一个)
主要显示区域包含 GUI 中的可视组件
创建顶层容器
创建容器
设置容器大小 (对框架及面板而言)
设置容器可见度 (对框架及面板而言)
SWING容器组件2
javax.swing 包
常见容器
JFrame

java Swing 实现简单的计算器

java Swing 实现简单的计算器

Java语言实现简单的计算器1、运行界面2、分装类:package com.insigma.MyFrame;import javax.naming.spi.DirStateFactory.Result;import org.omg.CORBA.PUBLIC_MEMBER;public class CommOper {private MyFrame myFrame;public CommOper(MyFrame myFrame) {this.myFrame = myFrame;}/*** 组装操作数* */public void doOper(String Oper) {if (myFrame.oper == 0) {myFrame.oper1 = myFrame.oper1 + Oper;} else {myFrame.oper2 = myFrame.oper2 + Oper;}}/*** 组装运算符* */public void doperObj(char oper) {myFrame.oper = oper;}/*** 计算结果值:* */public double sumOper(char oper) {double result = 0;if (myFrame.oper1 != null && !myFrame.oper1.equals(" ")&& myFrame.oper2 != null && !myFrame.oper2.equals(" ")) { switch (oper) {case '+':result = Double.parseDouble(myFrame.oper1)+ Double.parseDouble(myFrame.oper2);break;case '-':result = Double.parseDouble(myFrame.oper1)- Double.parseDouble(myFrame.oper2);break;case '*':result = Double.parseDouble(myFrame.oper1)* Double.parseDouble(myFrame.oper2);break;case '/':result = Double.parseDouble(myFrame.oper1)/ Double.parseDouble(myFrame.oper2);break;}}return result;}}3、界面类:/** MyFrame.java** Created on __DATE__, __TIME__*/package com.insigma.MyFrame;/**** @author __USER__*/public class MyFrame extends javax.swing.JFrame {/*** 全局变量*/String oper1 = "";String oper2 = "";char oper = 0;/** Creates new form MyFrame */public MyFrame() {initComponents();}/*** This method is called from within the constructor to initialize the form.* WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor.*///GEN-BEGIN:initComponents// <editor-fold defaultstate="collapsed" desc="Generated Code">private void initComponents() {jTextField1 = new javax.swing.JTextField();jButton1 = new javax.swing.JButton();jButton2 = new javax.swing.JButton();jButton3 = new javax.swing.JButton();jButton4 = new javax.swing.JButton();jButton5 = new javax.swing.JButton();jButton6 = new javax.swing.JButton();jButton7 = new javax.swing.JButton();jButton8 = new javax.swing.JButton();jButton9 = new javax.swing.JButton();jButton10 = new javax.swing.JButton();jButton11 = new javax.swing.JButton();jButton12 = new javax.swing.JButton();jButton13 = new javax.swing.JButton();jButton14 = new javax.swing.JButton();jButton15 = new javax.swing.JButton();jButton16 = new javax.swing.JButton();jButton17 = new javax.swing.JButton();menuBar = new javax.swing.JMenuBar();fileMenu = new javax.swing.JMenu();openMenuItem = new javax.swing.JMenuItem();saveMenuItem = new javax.swing.JMenuItem();saveAsMenuItem = new javax.swing.JMenuItem();exitMenuItem = new javax.swing.JMenuItem();editMenu = new javax.swing.JMenu();cutMenuItem = new javax.swing.JMenuItem();copyMenuItem = new javax.swing.JMenuItem();pasteMenuItem = new javax.swing.JMenuItem();deleteMenuItem = new javax.swing.JMenuItem();helpMenu = new javax.swing.JMenu();contentsMenuItem = new javax.swing.JMenuItem();aboutMenuItem = new javax.swing.JMenuItem();setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);jTextField1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) {jTextField1ActionPerformed(evt);}});jButton1.setText("9");jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt);}});jButton2.setText("8");jButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton2ActionPerformed(evt);}});jButton3.setText("7");jButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton3ActionPerformed(evt);}});jButton4.setText("4");jButton4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton4ActionPerformed(evt);}});jButton5.setText("5");jButton5.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton5ActionPerformed(evt);}});jButton6.setText("6");jButton6.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton6ActionPerformed(evt);}});jButton7.setText("1");jButton7.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) { jButton7ActionPerformed(evt);}});jButton8.setText("2");jButton8.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton8ActionPerformed(evt);}});jButton9.setText("3");jButton9.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton9ActionPerformed(evt);}});jButton10.setText("0");jButton10.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton10ActionPerformed(evt);}});jButton11.setText(".");jButton11.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton11ActionPerformed(evt);}});jButton12.setText("=");jButton12.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton12ActionPerformed(evt);}});jButton13.setText("+");jButton13.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton13ActionPerformed(evt);}});jButton14.setText("-");jButton14.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton14ActionPerformed(evt);}});jButton15.setText("*");jButton15.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton15ActionPerformed(evt);}});jButton16.setText("/");jButton16.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton16ActionPerformed(evt);}});jButton17.setText("C");jButton17.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton17ActionPerformed(evt);}});fileMenu.setText("\u67e5\u770b");openMenuItem.setText("\u6253\u5f00");fileMenu.add(openMenuItem);saveMenuItem.setText("Save");fileMenu.add(saveMenuItem);saveAsMenuItem.setText("Save As ...");fileMenu.add(saveAsMenuItem);exitMenuItem.setText("Exit");exitMenuItem.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent evt) {exitMenuItemActionPerformed(evt);}});fileMenu.add(exitMenuItem);menuBar.add(fileMenu);editMenu.setText("\u7f16\u8f91");cutMenuItem.setText("Cut");editMenu.add(cutMenuItem);copyMenuItem.setText("Copy");editMenu.add(copyMenuItem);pasteMenuItem.setText("Paste");editMenu.add(pasteMenuItem);deleteMenuItem.setText("Delete");editMenu.add(deleteMenuItem);menuBar.add(editMenu);helpMenu.setText("\u5e2e\u52a9");contentsMenuItem.setText("Contents");helpMenu.add(contentsMenuItem);aboutMenuItem.setText("About");helpMenu.add(aboutMenuItem);menuBar.add(helpMenu);setJMenuBar(menuBar);javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());getContentPane().setLayout(layout);layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jTextField1,javax.swing.GroupLayout.Alignment.TRAILING,javax.swing.GroupLayout.DEFAULT_SIZE, 218,Short.MAX_V ALUE).addGroup(layout.createSequentialGroup().addContainerGap().addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jButton1).addComponent(jButton7).addComponent(jButton4).addComponent(jButton10)).addGap(18, 18,18).addGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jButton2).addComponent(jButton5).addComponent(jButton8)).addGap(18,18,18).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jButton9).addComponent(jButton6).addComponent(jButton3))).addComponent(jButton11,javax.swing.GroupLayout.PREFERRED_SIZE,101,javax.swing.GroupLayout.PREFERRED_SIZE)).addPreferredGap(ponentPlacement.RELATED).addGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jButton13).addComponent(jButton14).addComponent(jButton15).addComponent(jButton16))).addComponent(jButton17,javax.swing.GroupLayout.PREFERRED_SIZE,81,javax.swing.GroupLayout.PREFERRED_SIZE).addGroup(javax.swing.GroupLayout.Alignment.TRAILING,layout.createSequentialGroup().addPreferredGap(ponentPlacement.RELATED).addComponent(jButton12,javax.swing.GroupLayout.PREFERRED_SIZE,87,javax.swing.GroupLayout.PREFERRED_SIZE).addPreferredGap(ponentPlacement.RELATED))).addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,Short.MAX_V ALUE)));layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(layout.createSequentialGroup().addContainerGap().addComponent(jTextField1,javax.swing.GroupLayout.PREFERRED_SIZE,62,javax.swing.GroupLayout.PREFERRED_SIZE).addGap(18, 18, 18).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jButton17).addComponent(jButton12)).addGap(18, 18, 18).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jButton1).addComponent(jButton16).addComponent(jButton2).addComponent(jButton3)).addGap(18, 18, 18).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jButton4).addComponent(jButton15).addComponent(jButton5).addComponent(jButton6)).addGap(18, 18, 18).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jButton7).addComponent(jButton14).addComponent(jButton8).addComponent(jButton9)).addGap(18, 18, 18).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jButton10).addComponent(jButton13).addComponent(jButton11)).addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,Short.MAX_V ALUE)));pack();}// </editor-fold>//GEN-END:initComponents/*** 事件:C清除* */private void jButton17ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:if (jTextField1.equals(" ")) {this.jTextField1.setText(this.jTextField1.getText());} else {oper1 = "";oper2 = "";oper = 0;this.jTextField1.setText("");}}/*** 事件:.* */private void jButton11ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:if (oper == 0) {if (!oper1.equals(" ") && oper1.indexOf(".") < 0) {oper1 = oper1 + ".";this.jTextField1.setText(this.jTextField1.getText() + ".");}} else {if (!oper2.equals(" ") && oper2.indexOf(".") < 0) {oper2 = oper2 + ".";this.jTextField1.setText(this.jTextField1.getText() + ".");}}}/*** =事件:* */private void jButton12ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:CommOper commOper = new CommOper(this);double result = commOper.sumOper(oper);this.jTextField1.setText(String.valueOf(result));}/*** 事件:/* */private void jButton16ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:CommOper commOper = new CommOper(this);if (oper == 0) {commOper.doperObj('/');this.jTextField1.setText(this.jTextField1.getText() + "/");}}/*** *事件:* */private void jButton15ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:CommOper commOper = new CommOper(this);if (oper == 0) {commOper.doperObj('*');this.jTextField1.setText(this.jTextField1.getText() + "*");}}/*** -事件:* */private void jButton14ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:CommOper commOper = new CommOper(this);if (oper == 0) {commOper.doperObj('-');this.jTextField1.setText(this.jTextField1.getText() + "-");}}/*** 事件:+* */private void jButton13ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:CommOper commOper = new CommOper(this);if (oper == 0) {commOper.doperObj('+');this.jTextField1.setText(this.jTextField1.getText() + "+");}}/*** 事件:0* */private void jButton10ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:CommOper commOper = new CommOper(this);commOper.doOper("0");this.jTextField1.setText(this.jTextField1.getText() + "0");}/*** 事件:9* */private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:CommOper commOper = new CommOper(this);commOper.doOper("9");this.jTextField1.setText(this.jTextField1.getText() + "9");}/*** 事件:8* */private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:CommOper commOper = new CommOper(this);commOper.doOper("8");this.jTextField1.setText(this.jTextField1.getText() + "8");}/*** 事件:7* */private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:CommOper commOper = new CommOper(this);commOper.doOper("7");this.jTextField1.setText(this.jTextField1.getText() + "7");}/*** 事件:6* */private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:CommOper commOper = new CommOper(this);commOper.doOper("6");this.jTextField1.setText(this.jTextField1.getText() + "6");}/*** 事件:5* */private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:CommOper commOper = new CommOper(this);commOper.doOper("5");this.jTextField1.setText(this.jTextField1.getText() + "5");}/*** 事件:4* */private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:CommOper commOper = new CommOper(this);commOper.doOper("4");this.jTextField1.setText(this.jTextField1.getText() + "4");}/*** 事件:3* */private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:CommOper commOper = new CommOper(this);commOper.doOper("3");this.jTextField1.setText(this.jTextField1.getText() + "3");}/*** 事件:2* */private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:CommOper commOper = new CommOper(this);commOper.doOper("2");this.jTextField1.setText(this.jTextField1.getText() + "2");}/*** 事件:1* */private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:CommOper commOper = new CommOper(this);commOper.doOper("1");this.jTextField1.setText(this.jTextField1.getText() + "1");}private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {// TODO add your handling code here:}private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) {// GEN-FIRST:event_exitMenuItemActionPerformedSystem.exit(0);}// GEN-LAST:event_exitMenuItemActionPerformed/*** @param args* the command line arguments*/public static void main(String args[]) {java.awt.EventQueue.invokeLater(new Runnable() {public void run() {new MyFrame().setVisible(true);}});}//GEN-BEGIN:variables// Variables declaration - do not modifyprivate javax.swing.JMenuItem aboutMenuItem;private javax.swing.JMenuItem contentsMenuItem;private javax.swing.JMenuItem copyMenuItem;private javax.swing.JMenuItem cutMenuItem;private javax.swing.JMenuItem deleteMenuItem;private javax.swing.JMenu editMenu;private javax.swing.JMenuItem exitMenuItem;private javax.swing.JMenu fileMenu;private javax.swing.JMenu helpMenu;private javax.swing.JButton jButton1;private javax.swing.JButton jButton10;private javax.swing.JButton jButton11;private javax.swing.JButton jButton12;private javax.swing.JButton jButton13;private javax.swing.JButton jButton14;private javax.swing.JButton jButton15;private javax.swing.JButton jButton16;private javax.swing.JButton jButton17;private javax.swing.JButton jButton2;private javax.swing.JButton jButton3;private javax.swing.JButton jButton4;private javax.swing.JButton jButton5;private javax.swing.JButton jButton6;private javax.swing.JButton jButton7;private javax.swing.JButton jButton8;private javax.swing.JButton jButton9;private javax.swing.JTextField jTextField1;private javax.swing.JMenuBar menuBar;private javax.swing.JMenuItem openMenuItem;private javax.swing.JMenuItem pasteMenuItem;private javax.swing.JMenuItem saveAsMenuItem;private javax.swing.JMenuItem saveMenuItem;// End of variables declaration//GEN-END:variables }。

java普通计算器共10页文档

java普通计算器共10页文档

基本思想:建立窗口时,我后面才想到把所有的组件先放到Container容器中。

我先把计算器分解成,菜单栏,输入区,按钮区,分别对三个函数实现相应的操作,最后在计算器构造函数调用绑定到窗口。

我创建了计算符操作按钮、非计算操作按钮、菜单监听器,三个监听器来实现菜单和按钮监听。

对于各组件我采用GridBagLayout可变布局,再GridBagConstraints对布局组件布局设置。

JTextField输入区全局定义为了方便按钮的输入。

创建一个按钮函数,有利于添加的按钮布局设置以及根据不同类型的按钮添加不同的监听器。

因为计算器有整数和小数计算的区别,我创建一个数值类根据不同的值,计算后返回不同的类型,在类内部实现数值的计算操作。

最后单独一个函数来实现计算操作。

import java.awt.Container;import java.awt.Font;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JTextField;public class Caculat extends JFrame{private GridBagLayout layout=new GridBagLayout();//可变布局private GridBagConstraints constraints=new GridBagConstraints();//布局设置private Container container=new Container();//容器,用于储存组件,最后一起添加到窗口JTextField textField=new JTextField();//输入区int fpoint=0;//textField 光标定位String last="0";//存储最后输入的数字String copty="";//编辑时使用Numer result=new Numer();//结果暂存Numer num=new Numer();//输入暂存private String lastCommand="=";//保存+,-,*,/,=命令Numer M;//结果存储器boolean upfirst=true;//判断是否首次使用向上private boolean start=false;//判断是否为数字的开始private boolean setoperator=false;//判断是否使用计算符private boolean den=false;//判断是否刚刚使用等号public Caculat(){super("计算器");container.setLayout(layout);addMenu();addTextField();addButton();add(container);//添加菜单private void addMenu(){JMenu menus[]=new JMenu[3];//主菜单menus[0]=new JMenu("查看(V)");menus[0].setMnemonic('F');menus[1]=new JMenu("编辑(E)");menus[1].setMnemonic('E');menus[2]=new JMenu("帮助(H)");menus[2].setMnemonic('H');JMenuItem lookItem[]=new JMenuItem[2];//子菜单JMenuItem aditItem[]=new JMenuItem[3];JMenuItem helpItem[]=new JMenuItem[2];lookItem[0]=new JMenuItem("普通型(O)");lookItem[0].setMnemonic('O');//快捷键lookItem[1]=new JMenuItem("标准型(T)");lookItem[1].setMnemonic('T');aditItem[0]=new JMenuItem("复制(C) Ctrl+C");//这个不会,只知道Alt+C aditItem[0].setMnemonic('C');aditItem[1]=new JMenuItem("粘贴(P) Ctrl+V");aditItem[1].setMnemonic('P');aditItem[2]=new JMenuItem("自由编辑(F)");aditItem[2].setMnemonic('F');helpItem[0]=new JMenuItem("关于主题(H)");helpItem[0].setMnemonic('H');helpItem[1]=new JMenuItem("关于计算器(A)");MenuAction menuaction=new MenuAction();//菜单监听器lookItem[0].addActionListener(menuaction);lookItem[1].addActionListener(menuaction);aditItem[0].addActionListener(menuaction);aditItem[1].addActionListener(menuaction);aditItem[2].addActionListener(menuaction);helpItem[0].addActionListener(menuaction);helpItem[1].addActionListener(menuaction);JMenuBar bar=new JMenuBar();//菜单容器吧menus[0].add(lookItem[0]);menus[0].add(lookItem[1]);menus[1].add(aditItem[0]);menus[1].add(aditItem[1]);menus[1].add(aditItem[2]);menus[2].add(helpItem[0]);menus[2].add(helpItem[1]);setJMenuBar(bar);//把菜单绑到窗口上的方法bar.add(menus[0]);bar.add(menus[1]);bar.add(menus[2]);//添加输入区private void addTextField(){constraints.gridx=0;//组件x位置constraints.gridy=1;//组件y位置constraints.gridheight=1;//组件高度constraints.gridwidth=5;//组件宽度constraints.fill=GridBagConstraints.BOTH;//组件随显示变化的选项constraints.weightx=1;//水平扩展,即显示变化时,长度变化constraints.weighty=1;//垂直扩展,即高度变化textField.setHorizontalAlignment(JTextField.RIGHT);//光标右边显示textField.setEditable(false);//不可编辑textField.setFont(new Font("Serif",Font.PLAIN,18));//显示字体layout.setConstraints(textField, constraints);//把布局设置应用到组件上container.add(textField);//把该组件添加到容器中//添加按钮区private void addButton(){InsertAction insert=new InsertAction();CommandAction command=new CommandAction();addbutton("MC",0,2,1,1,command);addbutton("MR",1,2,1,1,command);addbutton("MS",2,2,1,1,command);addbutton("M+",3,2,1,1,command);addbutton("M-",4,2,1,1,command);addbutton("Delete",0,3,1,1,insert );addbutton("CE",1,3,1,1,insert);addbutton("C",2,3,1,1,insert);addbutton("±",3,3,1,1,insert);addbutton("√",4,3,1,1,command);addbutton("7",0,4,1,1,insert);addbutton("8",1,4,1,1,insert);addbutton("9",2,4,1,1,insert);addbutton("÷",3,4,1,1,command);addbutton("%",4,4,1,1,command);addbutton("4",0,5,1,1,insert);addbutton("5",1,5,1,1,insert);addbutton("6",2,5,1,1,insert);addbutton("×",3,5,1,1,command);addbutton("1/x",4,5,1,1,command);addbutton("1",0,6,1,1,insert);addbutton("2",1,6,1,1,insert);addbutton("3",2,6,1,1,insert);addbutton("-",3,6,1,1,command);addbutton("+",4,6,1,1,command);addbutton("0",0,7,1,1,insert);addbutton(".",1,7,1,1,insert);addbutton("=",4,7,1,1,command);addbutton("←",2,7,1,1,command);addbutton("→",3,7,1,1,command);//单个按钮设置private void addbutton(String label,int x,int y,int height,int width,ActionListener listener){JButton button=new JButton(label);constraints.gridx=x;constraints.gridy=y;constraints.gridheight=height;constraints.gridwidth=width;constraints.fill=GridBagConstraints.BOTH;button.addActionListener(listener);layout.setConstraints(button,constraints);container.add(button);//container.//非计算符监听器。

java swing实现简易计算器

java swing实现简易计算器

简易计算器【案例介绍】1.案例描述本案例要求利用Java Swing 图形组件开发一个可以进行简单的四则运算的图形化计算器。

2.运行结果运行结果【案例目标】●学会分析“简易计算器”程序实现的逻辑思路。

●能够独立完成“简易计算器”程序的源代码编写、编译及运行。

●掌握Java Swing界面编程的应用。

●了解计算器逻辑运算实现。

【案例分析】要制作一个计算器,首先要知道它由哪些部分组成,如下图所示:一个简单的图形化界面计算器,需要由界面组件、组件的时间监听器和具体的事件处理逻辑组成。

实现一个简易图形化界面计算器可分以下几个步骤:1.UI组件创建和初始化:包括窗体的创建,显示计算结果文本框、清除按钮、数字按钮、运算符等按钮的初始化。

2.在窗体中添加UI组件:包括放置数字键及运算符面板、放置清除框面板。

3.布局结束之后,就是计算器的难点:编写事件处理程序。

4.按键的响应实现。

5.计算逻辑的实现。

6.注册监听器【案例实现】Calculator.java1 package chapter1102;2 import java.awt.*;3 import java.awt.event.*;4 import javax.swing.*;5 import java.util.Vector;6 import java.math.BigDecimal;7 public class Calculator {8 // 操作数1,为了程序的安全,初值一定设置,这里我们设置为0。

9 String str1 = "0";10 // 操作数211 String str2 = "0";12 // 运算符13 String signal = "+";14 // 运算结果15 String result = "";16 // 以下k1至k5为状态开关17 // 开关1用于选择输入方向,将要写入str1或str218 // 为 1 时写入 str1,为 2 时写入 str219 int k1 = 1;20 // 开关 2 用于记录符号键的次数21 // 如果 k2>1 说明进行的是 2+3-9+8 这样的多符号运算22 int k2 = 1;23 // 开关3用于标识 str1 是否可以被清 024 // 等于 1 时可以,不等于1时不能被清025 int k3 = 1;26 // 开关4用于标识 str2 是否可以被清 027 // 等于 1 时可以,不等于1时不能被清028 int k4 = 1;29 // 开关5用于控制小数点可否被录入30 // 等于1时可以,不为1时,输入的小数点被丢掉31 int k5 = 1;32 // store的作用类似于寄存器,用于记录是否连续按下符号键33 JButton store;34 //vt 存储之前输入的运算符。

java计算器程序代码及文档(带异常处理,括号等。注释详细易懂)

java计算器程序代码及文档(带异常处理,括号等。注释详细易懂)

四则运算计算器设计说明书一.设计目标本次计算器的程序设计,通过使用JA V A中的AWT包和Swing包的类库设计图形界面的计算器。

此计算器能够完成加减乘除的四则混合运算。

利用面向对象程序设计的思想,将各个组件的事件响应分别用不同的方式表达出来,并且使用了图形界面中的事件委托机制来处理事件响应。

二.设计流程1. 分析该计算器需要完成的功能。

用户能够完成添加括号和负号的四则混合运算,并且计算器能够自动识别运算符的优先级,根据用户输入的运算表达式,自动计算出相应的结果。

同时还完成了计算器中C按钮清屏功能和Backspace退格键。

2. 考虑异常处理。

(1)当输入的表达式中出现除零的操作,显示框将显示“Infinity(无穷大)”。

(2)当输入的表达式错误时,将弹出提示框显示“表达式错误请重新输入”(3)当计算器的显示文本框里为没有输入内容时直接点击等号按钮,将弹出提示框显示“对不起,您没有任何输入,请重新输入:”。

(4)当第一次输入乘号键,除号键,右括号,小数点,求余键,等号键,ce 键,Backspace键时提示错误。

4. 考虑数据的处理目标计算表达式通过点击计算器界面上的按钮进行输入,当按下等号之后,计算器通过调用JA V A中script这个包中的相关类和方法来实现数据的处理。

5. 编码实现计算器的功能。

(1)新建相关的文件。

(2)引入JA V A中相关的包。

(3)新建类Jsq,并继承了类Frame,而且实现了接口ActionListener(4)定义相关的变量,创建相关组件,并对组件的属性进行设置。

(5)对所创建的组件进行布局,完成界面的实现。

(6)为各个组件添加事件监听器。

(7)重写事件接口ActionListener的方法public void actionPerformed(ActionEvent e)。

(8)为各个组件编写事件代码,完成每个按钮的不同功能。

三.测试过程的截图1. 程序初始运行界面2运算测试3.混合运算测试:异常处理测试:1.输入错误的表达式2、除数为0时:四.设计结果此计算器以完成设计,所有功能都以实现,并达到了预想的设计目标。

使用Java中的Swing技术实现一个简单的计算器

使用Java中的Swing技术实现一个简单的计算器

一.实验题目:使用Java中的Swing技术实现一个简单的计算器二.实验目的及要求1.实验目的:掌握java图形界面设计方法,理解委托事件处理模型2.实验要求(1)程序结构清晰,运行正确。

(2)通过界面能用按钮输入0~9十个数字,并至少能进行+、-、* 和/运算。

(3)给出实验内容的程序设计、实现和结果,并对结果进行分析。

三.试验步骤1、打开NetBeans IDE 6.9.1,点击“文件”菜单选择“新建项目”在弹出的对话框中输入相应的项目名JiSuanQi、项目位置D:\java,系统将根据项目位置建立相应的项目文件夹D:\java\JiSuanQi。

2、项目新建好后点击项目下面的子目录,在“源包”上右键-->选择“新建”--->java类,在弹出的对话框中输入相应的类名,单击“完成”,就创建了一个.java 文件。

3、若程序事先已设计好,则可将其放置在项目文件夹下面的src子文件夹下面,在打开项目时缺省包下面会显示相应的.java文件。

4、在程序设计好之后,右键相应的.java文件,选择“调试文件”,在程序调试成功没有错误后右键.java文件,选择“运行文件”,如下图示:5、Java源文件(*.java)通过编译器javac.exe编译生成字节码文件(*.class),再由解释器java.exe执行四.源程序文件import java.awt.BorderLayout;import java.awt.Button;import java.awt.Color;import java.awt.Dialog;import java.awt.FlowLayout;import java.awt.Frame;import java.awt.GridLayout;import java.awt.Panel;import java.awt.TextField;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;public class JiSuanQi {public static void main(String[] args){ MyFrame52 mm = new MyFrame52();}}class MyFrame52 extends Frame {TextField tf = new TextField(25);JButton b3 = new JButton("DEL");JButton b33 = new JButton("AC/ON");JButton b4 = new JButton("0");JButton b41 = new JButton("=");JButton b42 = new JButton("+");JButton b1 = new JButton("1");JButton b2 = new JButton("2");JButton b_3 = new JButton("3");JButton b_4 = new JButton("4");JButton b5 = new JButton("5");JButton b6 = new JButton("6");JButton b7 = new JButton("7");JButton b8 = new JButton("8");JButton b9 = new JButton("9");JButton b_chu = new JButton("÷");JButton b_cheng = new JButton("×");JButton b_jian = new JButton("-");MyFrame52() {JLabel l = new JLabel(" 单功能计算器");l.setForeground(Color.black);JPanel pla = new JPanel();pla.add(l); // 将第一行放在一个panel最上边b3.addActionListener(new listen(this));b33.addActionListener(new listen(this));b4.addActionListener(new listen(this));b41.addActionListener(new listen(this));b42.addActionListener(new listen(this));b1.addActionListener(new listen(this));b2.addActionListener(new listen(this));b_3.addActionListener(new listen(this));b_4.addActionListener(new listen(this));b5.addActionListener(new listen(this));b6.addActionListener(new listen(this));b7.addActionListener(new listen(this));b8.addActionListener(new listen(this));b9.addActionListener(new listen(this));b_chu.addActionListener(new listen(this));b_cheng.addActionListener(new listen(this));b_jian.addActionListener(new listen(this));JFrame f = new JFrame("计算器");JPanel p = new JPanel();p.setLayout(new GridLayout(3, 1, 4, 4));JPanel p1 = new JPanel();JPanel p2 = new JPanel();p2.setLayout(new GridLayout(3, 3, 4, 4)); //布局管理器中各种按钮的排布p2.add(b7);p2.add(b8);p2.add(b9);p2.add(b_cheng);p2.add(b_4);p2.add(b5);p2.add(b6);p2.add(b_chu);p2.add(b1);p2.add(b2);p2.add(b_3);p2.add(b_jian);JPanel p3 = new JPanel();p3.setLayout(new GridLayout(1, 2, 0, 0)); Panel p4 = new Panel(); BorderLayout s = new BorderLayout();p4.setLayout(s);p4.setBackground(Color.red);p4.add(b4, BorderLayout.WEST);p4.add(b41, BorderLayout.CENTER);p4.add(b42, BorderLayout.EAST);p1.add(tf);// 放置的是计算器的输入框b33.setForeground(Color.black);b3.setForeground(Color.black);p3.add(b3);p3.add(b33);p.add(l, BorderLayout.NORTH);p.add(p1, BorderLayout.CENTER);p.add(p3, BorderLayout.SOUTH);f.setLayout(new BorderLayout(30, 5)); f.add(p, BorderLayout.NORTH);f.add(p2, BorderLayout.CENTER);f.add(p4, BorderLayout.SOUTH);f.pack();f.setVisible(true);f.setLocation(900, 300);f.setSize(200, 300);f.setResizable(false);}}class listen implements ActionListener { MyFrame52 dd;listen(MyFrame52 ds) {this.dd = ds;}public static int zhi = 0;public static int nextzhi = 0;public static int sum = 0;public static int fuhao;public void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif (dd.b1 == e.getSource()) {dd.tf.setText(dd.tf.getText() + "1");} else if (dd.b2 == e.getSource()) {dd.tf.setText(dd.tf.getText() + "2");} else if (dd.b_3 == e.getSource()) {dd.tf.setText(dd.tf.getText() + "3");} else if (dd.b_4 == e.getSource()) {dd.tf.setText(dd.tf.getText() + "4");} else if (dd.b5 == e.getSource()) {dd.tf.setText(dd.tf.getText() + "5");} else if (dd.b6 == e.getSource()) {dd.tf.setText(dd.tf.getText() + "6");} else if (dd.b7 == e.getSource()) {dd.tf.setText(dd.tf.getText() + "7");} else if (dd.b8 == e.getSource()) {dd.tf.setText(dd.tf.getText() + "8");} else if (dd.b9 == e.getSource()) {dd.tf.setText(dd.tf.getText() + "9");} else if (dd.b_cheng == e.getSource()) {// 计算乘法fuhao = 1;zhi = Integer.parseInt(dd.tf.getText());// 得到了文本框里的值;dd.tf.setText("");} else if (dd.b_chu == e.getSource()) {// 计算除法fuhao = 2;zhi = Integer.parseInt(dd.tf.getText());// 得到了文本框里的值;dd.tf.setText("");} else if (dd.b_jian == e.getSource()) {// 计算减法fuhao = 3;zhi = Integer.parseInt(dd.tf.getText());// 得到了文本框里的值;dd.tf.setText("");} else if (dd.b3 == e.getSource()) {// 退格得到里面的值.从最后的一位开始删除StringBuffer sb = new StringBuffer(dd.tf.getText());int changdu = sb.length();if (changdu > 0) {sb.deleteCharAt(changdu - 1);// 删除的是最后的一位dd.tf.setText(sb.toString());} else {dd.tf.setText("");}} else if (dd.b33 == e.getSource()) {// 清零zhi = 0;nextzhi = 0;sum = 0;dd.tf.setText("");} else if (dd.b4 == e.getSource()) {dd.tf.setText(dd.tf.getText() + "0");} else if (dd.b41 == e.getSource()) {// 等号;nextzhi = Integer.parseInt(dd.tf.getText());// 得到了文本框里的值;dd.tf.setText("");if (fuhao == 1) {// 计算的是乘法;sum = zhi * nextzhi;dd.tf.setText(sum + "");} else if (fuhao == 2) {// 计算除法sum = zhi / nextzhi;dd.tf.setText(sum + "");} else if (fuhao == 3) {// 计算减法sum = zhi - nextzhi;dd.tf.setText(sum + "");} else if (fuhao == 4) {// 符号为四算的是加法;sum = zhi + nextzhi;dd.tf.setText(sum + "");}} else if (dd.b42 == e.getSource()) {// 计算加法fuhao = 4;zhi = Integer.parseInt(dd.tf.getText());// 得到了文本框里的值;dd.tf.setText("");}}}五.程序的执行过程:1.加法操作100+502.减法操作100-503.乘法操作100×504.除法操作100÷50其中DEL为退格操作,AC/ON为清零操作六.试验总结:通过本次计算器的实现试验,进一步了解了Swing技术,掌握java图形界面设计方法,理解委托事件处理模型,通过本次试验进一步熟悉了JA V A的开发流程和NetBeans集成开发环境。

JAVA计算器PPT

JAVA计算器PPT

谢谢观看!
MR、MS、M+”实现存储器存储以及加和运算。
• 功能3:按“+”“-”“*”“/”分别进行四则运算。 • 功能4:在任何时候按下“+/-”键,计算器文本框上的数字置反号。 • 功能6:按下“Backspace”实现向前进格,按下“C”键清除数据,按下“CE”键,数据被全部清零,此时存储器
中不再保存任何数据。
需求分析
• 通过日常的习惯以及询问周边好友,发现更多的人倾向于鼠标直接操作,而对
于传统的键盘输入,在节省时间以及面向客户需求等问题上,都不如鼠标快速 而直接。所以此次实验采用GUI方式实现计算器,并采用Swing组件,AWT事件 处理等实现具体功能。
• 需求分析:在我们日常生活学习中,面对数据量庞大的计算,或者计算开支、
全正确,只有代码和运行结果全都正确那才是真起码的正确呢。
主要收获
• 这次的程序设计,从一个简单的计算器就可以看出JAVA的程序设计不是那么简单,仅仅是一个小小的计算器,就
已经有很多需要注意的问题,一不小心就会出错,还会有很多地方没怎么明白,而计算器的设计是最简单的几个设 计其中之一,可见,平时的知识积累是很重要的。没有知识的积累,再简单的东西也不可能设计出来。课程设计还 让我们练习了动手能力,使我们平时学习的知识得以在实际中应用,不会学死书,活学活用,很大程度上提高了我 们的能力,对以后的学习、工作、生活也会有一定的帮助。通过此次的程序设计,让我了解了JAVA的更多知识, 使平时的知识可以运用,更好的理解了JAVA这门课程。
程序设计
• 按照设计需求以及目的,设计计算机主面板,定功能键为红色,数字键
以及部分功能键为蓝色,数字的命名为“董鑫的计算器”
功能的实现

java实验计算器(使用java窗体工具做一个简单的计算器)

java实验计算器(使用java窗体工具做一个简单的计算器)

实验名称:使用java窗体工具做一个简单的计算器一、实验目的1.学会使用java窗体控件。

2.主要使用JButton以及JLaber空间。

3.使用监听器4.会设置各种控件参数5.学会处理各种数据之间的转换6.软件微小问题的调试与优化二、实验内容使用窗体控件来制作一个简易计算器,要能够正确的实现加减乘除等相关功能,并且能优化字符串与整型,浮点型之间的关系,使之输出整数结果末尾不带有零,并且进行一些其他优化,如无限小数,以及二进制与十进制转换而导致的误差,需要进行相关优化。

三、实验步骤import java.awt.EventQueue;import javax.swing.JFrame;import javax.swing.JTextField;import javax.swing.JButton;import java.awt.event.ActionListener;import java.awt.font.TextMeasurer;import java.awt.event.ActionEvent;import javax.swing.SwingConstants;import java.awt.Font;public class Calculate {String oldString;int operate;private JFrame frame;private JTextField textField;/*** Launch the application.*/public static void main(String[] args) {EventQueue.invokeLater(new Runnable() {public void run() {try {Calculate window = new Calculate();window.frame.setVisible(true);} catch (Exception e) {e.printStackTrace();}}});}/*** Create the application.*/public Calculate() {initialize();}/*** Initialize the contents of the frame.*/private void initialize() {frame = new JFrame();frame.setTitle("\u8BA1\u7B97\u5668");frame.setBounds(750, 300, 339, 352);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.getContentPane().setLayout(null);textField = new JTextField();textField.setEditable(false);textField.setFont(new Font("宋体", Font.PLAIN, 30));textField.setHorizontalAlignment(SwingConstants.RIGHT);textField.setText("0");textField.setBounds(14, 13, 285, 66);frame.getContentPane().add(textField);textField.setColumns(10);JButton btnNewButton = new JButton("4");btnNewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {String s=textField.getText();if(s.equals("0"))textField.setText("4");elsetextField.setText(s+"4");}});btnNewButton.setBounds(24, 169, 59, 27);frame.getContentPane().add(btnNewButton);JButton button = new JButton("7");button.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {String s=textField.getText();if(s.equals("0"))textField.setText("7");elsetextField.setText(s+"7");}});button.setBounds(24, 127, 59, 27);frame.getContentPane().add(button);JButton button_1 = new JButton("1");button_1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s=textField.getText();if(s.equals("0"))textField.setText("1");elsetextField.setText(s+"1");}});button_1.setBounds(24, 209, 59, 27);frame.getContentPane().add(button_1);JButton button_2 = new JButton("2");button_2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s=textField.getText();if(s.equals("0"))textField.setText("2");elsetextField.setText(s+"2");}});button_2.setBounds(98, 209, 59, 27);frame.getContentPane().add(button_2);JButton button_3 = new JButton("3");button_3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s=textField.getText();if(s.equals("0"))textField.setText("3");elsetextField.setText(s+"3");}});button_3.setBounds(171, 209, 59, 27);frame.getContentPane().add(button_3);JButton button_4 = new JButton("5");button_4.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s=textField.getText();if(s.equals("0"))textField.setText("5");elsetextField.setText(s+"5");}});button_4.setBounds(98, 169, 59, 27);frame.getContentPane().add(button_4);JButton button_5 = new JButton("6");button_5.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s=textField.getText();if(s.equals("0"))textField.setText("6");elsetextField.setText(s+"6");}});button_5.setBounds(171, 169, 59, 27);frame.getContentPane().add(button_5);JButton button_6 = new JButton("8");button_6.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s=textField.getText();if(s.equals("0"))textField.setText("8");elsetextField.setText(s+"8");}});button_6.setBounds(97, 127, 59, 27);frame.getContentPane().add(button_6);JButton button_7 = new JButton("9");button_7.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s=textField.getText();if(s.equals("0"))textField.setText("9");elsetextField.setText(s+"9");}});button_7.setBounds(171, 127, 59, 27);frame.getContentPane().add(button_7);JButton button_8 = new JButton("0");button_8.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s=textField.getText();if(s.equals("0"))textField.setText("0");elsetextField.setText(s+"0");}});button_8.setBounds(24, 248, 59, 27);frame.getContentPane().add(button_8);JButton button_9 = new JButton(".");button_9.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s=textField.getText();if(!s.contains("."))textField.setText(s+".");}});button_9.setBounds(98, 249, 59, 27);frame.getContentPane().add(button_9);JButton button_10 = new JButton("\u00B1");button_10.setBounds(171, 249, 59, 27);frame.getContentPane().add(button_10);JButton button_11 = new JButton("+");button_11.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { oldString=textField.getText();textField.setText("0");operate=1;}});button_11.setBounds(240, 87, 59, 27);frame.getContentPane().add(button_11);JButton button_12 = new JButton("-");button_12.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {oldString=textField.getText();textField.setText("0");operate=2;}});button_12.setBounds(240, 127, 59, 27);frame.getContentPane().add(button_12);JButton button_13 = new JButton("*");button_13.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {oldString=textField.getText();textField.setText("0");operate=3;}});button_13.setBounds(240, 169, 59, 27);frame.getContentPane().add(button_13);JButton button_14 = new JButton("/");button_14.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {oldString=textField.getText();textField.setText("0");operate=4;}});button_14.setBounds(240, 209, 59, 27);frame.getContentPane().add(button_14);JButton btnNewButton_1 = new JButton("C"); btnNewButton_1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {textField.setText("0");oldString="0";}});btnNewButton_1.setBounds(24, 87, 59, 27);frame.getContentPane().add(btnNewButton_1);JButton btnCe = new JButton("CE");btnCe.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {}});btnCe.setBounds(98, 87, 59, 27);frame.getContentPane().add(btnCe);JButton button_16 = new JButton("<-");button_16.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {String ss=textField.getText();if(ss.length()==1)textField.setText("0");elsetextField.setText(ss.substring(0, ss.length()-1));}});button_16.setBounds(171, 87, 59, 27);frame.getContentPane().add(button_16);JButton button_15 = new JButton("=");button_15.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {double a=Double.parseDouble(oldString);double b=Double.parseDouble(textField.getText());double c=0;if(operate==1) c=a+b;if(operate==2) c=a-b;if(operate==3) c=a*b;if(operate==4) c=a/b;String cc=String.valueOf(c);char ccc=cc.charAt(cc.length()-1);if(ccc=='0'){textField.setText(cc.substring(0,cc.length()));}elsetextField.setText(String.valueOf(c));}});button_15.setBounds(240, 248, 59, 27);frame.getContentPane().add(button_15);}}四、实验结果解决了输出结果为整数,却带小数的结果并且上面会显示式子退格功能,清空功能也已经实现。

用Java实现的计算器

用Java实现的计算器

用Java实现的计算器计算器是一个广泛应用的工具,用于进行数学运算。

如今,随着计算机技术的不断发展,计算器也逐渐被软件程序所替代。

本文将介绍如何使用Java语言实现一个简单的计算器程序。

一、程序概述计算器程序主要包括用户界面和计算逻辑两部分。

用户界面负责显示计算器的按钮和输入输出框,计算逻辑负责根据用户输入进行运算并返回结果。

二、用户界面设计在Java中,我们可以使用Swing或JavaFX等图形库来设计用户界面。

本文选用JavaFX来实现计算器的界面。

界面需要包括数字按钮、运算符按钮、输入输出框等组件。

在程序启动时,我们需要初始化界面并设置各个组件的位置、大小和样式。

为了方便布局,我们可以使用GridPane等布局管理器来管理组件。

三、计算逻辑实现1. 表达式解析计算器需要将用户输入的表达式解析为计算机可以识别的格式。

Java中可以使用正则表达式或者逆波兰表达式来解析表达式。

本文选用简单的正则表达式方法进行解析。

2. 运算逻辑解析表达式后,我们需要根据运算符的优先级进行运算。

Java中可以使用栈来实现运算符的优先级判断和运算。

我们可以定义一个操作数栈和一个运算符栈,按照规则将表达式中的数字和运算符依次入栈,并根据运算符的优先级进行运算并将结果入栈。

四、完整代码示例import javafx.application.Application;import javafx.geometry.Insets;import javafx.scene.Scene;import javafx.scene.control.Button;import javafx.scene.control.TextField;import yout.GridPane;import javafx.stage.Stage;public class Calculator extends Application {private TextField inputField; // 输入框private Button[] numberButtons; // 数字按钮private Button[] operatorButtons; // 运算符按钮@Overridepublic void start(Stage primaryStage) {primaryStage.setTitle("计算器");primaryStage.setResizable(false);// 初始化界面GridPane gridPane = new GridPane();gridPane.setHgap(10);gridPane.setVgap(10);gridPane.setPadding(new Insets(10));// 初始化输入框inputField = new TextField();inputField.setEditable(false);inputField.setPrefHeight(40);inputField.setMaxWidth(Double.MAX_VALUE);gridPane.add(inputField, 0, 0, 4, 1);// 初始化数字按钮numberButtons = new Button[10];for (int i = 0; i < 10; i++) {numberButtons[i] = createNumberButton(String.valueOf(i), i); }gridPane.add(numberButtons[7], 0, 1);gridPane.add(numberButtons[9], 2, 1);gridPane.add(numberButtons[4], 0, 2);gridPane.add(numberButtons[5], 1, 2);gridPane.add(numberButtons[6], 2, 2);gridPane.add(numberButtons[1], 0, 3);gridPane.add(numberButtons[2], 1, 3);gridPane.add(numberButtons[3], 2, 3);gridPane.add(numberButtons[0], 0, 4);gridPane.add(createDotButton(), 1, 4);gridPane.add(createEqualButton(), 2, 4);// 初始化运算符按钮operatorButtons = new Button[4];operatorButtons[0] = createOperatorButton("+"); operatorButtons[1] = createOperatorButton("-"); operatorButtons[2] = createOperatorButton("*"); operatorButtons[3] = createOperatorButton("/"); gridPane.add(operatorButtons[0], 3, 1);gridPane.add(operatorButtons[1], 3, 2);gridPane.add(operatorButtons[3], 3, 4);Scene scene = new Scene(gridPane);primaryStage.setScene(scene);primaryStage.show();}private Button createNumberButton(String text, int number) { Button button = new Button(text);button.setPrefSize(60, 40);button.setOnAction(e -> {String oldText = inputField.getText();inputField.setText(oldText + number);});return button;}private Button createDotButton() {Button button = new Button(".");button.setPrefSize(60, 40);button.setOnAction(e -> {String oldText = inputField.getText();inputField.setText(oldText + ".");});return button;}private Button createEqualButton() {Button button = new Button("=");button.setPrefSize(60, 40);button.setOnAction(e -> {String expression = inputField.getText();// 调用计算逻辑进行计算if (expression != null && !expression.isEmpty()) { double result = calculate(expression);inputField.setText(String.valueOf(result));}});return button;}private Button createOperatorButton(String text) {Button button = new Button(text);button.setPrefSize(60, 40);button.setOnAction(e -> {String oldText = inputField.getText();inputField.setText(oldText + text);});return button;}private double calculate(String expression) {// 进行计算逻辑的实现// ...}public static void main(String[] args) {launch(args);}}五、总结通过本文的介绍,我们可以了解到使用Java语言实现一个简单计算器的基本框架和思路。

基于Java Swing的计算器的设计与实现

基于Java Swing的计算器的设计与实现

计算 器, 对于学 习J wa 程序设计 具有很 大帮助 , 尤其对 于《 J a v a 程序设计》 课 程的教学具有重要的指导作 用
[ 关键 字] 计 算器 ; S wi n g ; J  ̄ , v a
中 图分 类号 : T P 3 1 1 . 1 1 文献标识码 : A 文章编号 : 1 0 0 8. 6 6 0 9( 2 0 1 6 )1 0— 0 0 6 1 . 0 3
毽苯探 讨 ・ 应用技术与研究
t h i s . a d d ( p a n e l 2 , B o r d e r L a y o u t . S O UT ); H
降 低学生 的畏 惧 心理 , 便 于 知识 点 的掌握 和项 F 1 经 验 的 积

1 十 算器

×
退 掐
7 ¨
r 一
满 空
l + ; }


l l


累。奉 文利用 J a v a语言 的S wi n g 、 动作事件 处理机制等 技术
置为 F l o wL a y o u t 局的 J P a n e l 对 象上 靠右放置 两个 J B u t t o n 对象 , 下 面 部 分 是 一 个 设 置 为 4仃 4列 G r i d L a y o u t 布 局 的
为下一次运算做准备 。
7 ) 计 算 器 的健 壮 性 考虑 , 比如 用 广 在 没 输 入 第 一 个 操 作
T ER和 S OUTH 。
l 引 言
计 算器作 为一种 计算 工具 使用 频率非 常高 , 其 操 作 过 程 也 被 人们 所 熟 悉 。在 程 序 设 汁语 言 教 学 过 程 中 , 选 取 学 生 所 熟 悉 的 场 景 作 为 教 学 案 例 有 利 于 激 发 学 生 的学 习 兴 趣 和

java程序设计报告---设计一个计算器

java程序设计报告---设计一个计算器

课程设计课程设计目的设计一个基于Swing的计算器应用程序,完成普通的算术运算。

课程设计要求1.设计的计算器是基于Swing的,可以完成加减乘除和取余运算。

2.增加计算器的日期计算功能,能够计算两个日期之间相距的天数。

(要判断键入的日期格式是否正确,并能正确处理按钮动作事件,同时能够得到正确的计算结果)设计要点主要练习使用布局管理器设计一个计算器的界面,并使用事件监听器处理数据的输入,完成相关的计算。

在面板上可以增加一个算术/日期的转换按钮来选择是普通计算还是日期计算。

以及增加一个清零的按钮CE,用以将显示结果的单行文本域清空,同时将各个参数设置为默认值。

二、总体方案设计日常生活中经常需要用到计算器,比如科学计算,数值计算,会计业务等等,在Applet 中实现一个精巧的计算器,可以让用户的操作也更方便和快捷。

本项目需要实现一个具有四则运算的计算器,能够实现基本的加、减、乘、除运算,以及其它的辅助功能;界面简洁适用;要提供主要的设计思路、类的设计,本次设计添加转进制等功能。

本应用程序继承自框架(frame),此程序使用frame布局管理器bordelayout,将单行文本加入相应区域,包含各种按纽的面板buttonpanel加入相应区域还可以将进制转换的面板与单行文本框放一块包含各种按纽的面板buttonpanel采用N行N列的网格布局,然后将数字按钮和运算符按钮以及控制按钮添加到面板中,同时注册按钮事件监听器。

布局设计好后再添加按钮事件。

对于此程序要考虑到点击加、减、乘、除按钮时是否有点击数字按钮,如果是第一次点击数字按钮或者是点击数字按钮前点击了加、减、乘、除按钮则直接把数字按钮的数值设置到文本框中,否则则应把文本框中的内容加上你所点击按钮的数值设置到文本框中。

四、程序的调试与运行结果说明程序功能实现:使用swing组件和awt图形用户界面以及BroadLayout布局管理器。

通过在按钮的单击事件处理方法中调用类的成员方法calculator()来进行简易计算器的各种运算,并正确实现运算功能。

java 计算器演示

java 计算器演示

代码部分
if(operator.equals("+")){//执行加法运算 result = Double.parseDouble(num1) + Double.parseDouble(input.getText().trim()); } else if(operator.equals("-")){//减法运算 result = Double.parseDouble(num1) - Double.parseDouble(input.getText().trim()); } else if(operator.equals("*")){//乘法运算 result = Double.parseDouble(num1) * Double.parseDouble(input.getText().trim()); } else if(operator.equals("/")){//除法运算 result = Double.parseDouble(num1) / Double.parseDouble(input.getText().trim()); } input.setText(new DecimalFormat("0.00").format(result)); }

private JButton three = new JButton("3"); private JButton four = new JButton("4"); private JButton five = new JButton("5"); private JButton six = new JButton("6"); private JButton seven = new JButton("7"); private JButton eight = new JButton("8"); private JButton nine = new JButton("9"); private String num1 = "";//保存第一个运 算数字 private String operator = "";//保存运算符 号 public static void main(String[] args) { new Mycalculator(); }

Java课程设计(计算器)

Java课程设计(计算器)
面设计
界面布局:简洁明了,易于操作 输入框:用于输入数字和运算符号 计算按钮:用于执行计算操作
结果显示框:用于显示计算结果 历史记录框:用于查看历史计算记录 帮助按钮:用于查看帮助信息或联系客服
功能需求优先级
基本运算功能:加、 减、乘、除
科学计算功能:平方、 开方、三角函数等
错误处理:处 理用户输入错 误,如输入非
数字字符等
功能扩展:支 持更多运算符 号和功能,如 平方、开方等
代码优化:提 高代码可读性 和可维护性, 减少代码冗余
和错误
测试与调试
单元测试:对每个功能模块进行独立测试,确保其正确性 集成测试:将各个功能模块组合起来进行测试,确保整体功能的正确性 边界值测试:对输入和输出边界值进行测试,确保程序在边界条件下的稳定性
Part Five
总结与展望
项目总结
项目目标:设计并实现一个计算器 项目成果:实现了加减乘除、平方根、正弦余弦等计算功能 项目难点:处理用户输入和错误处理 项目改进:优化界面设计,增加更多计算功能,提高用户体验
项目亮点与不足
● 项目亮点: - 界面设计简洁明了,易于操作 - 代码结构清晰,易于维护和扩展 - 功能齐全,满足日常 计算需求 - 性能稳定,响应速度快
实际应用价值
提高编程能力: 通过设计计算 器,可以提升 Java编程技能
理解算法原理: 通过设计计算 器,可以深入 理解算法原理
和实现方法
提高问题解决 能力:通过设 计计算器,可 以提升解决实 际问题的能力
提升团队协作 能力:通过设 计计算器,可 以提升团队协 作和沟通能力
THANKS
汇报人:
Java课程设计(计算器)
,a click to unlimited possibilities

java计算器【Swing】

java计算器【Swing】

import java.awt.*;import java.util.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;import java.io.*;import java.text.*;public class Calculator implements ActionListener {static JTextField txt; // 声明文本框对象static JFrame frame;static double yi, jieg, temp; // 声明中间变量和结果变量static int fh = 5; // 选择计算模式,用于选择双目运算static String s;public Calculator() {try {UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); //把外观设置成你所使用的平台的外观} catch (Exception e) {System.out.println("无法设置界面风格 ");}frame = new JFrame("计算器"); // 创建一个标题名为计算器的窗口frame.setSize(420, 350); // 设置窗口的大小(宽度和高度)frame.setLocation(300, 300); // 设置在屏幕出现的默认位置JPanel p = new JPanel(); // 创建JPanel面板(中间容器)JPanel p1 = new JPanel();JPanel p2 = new JPanel();JPanel p3 = new JPanel();JPanel p4 = new JPanel();JPanel p5 = new JPanel();JPanel p6 = new JPanel();JPanel p7 = new JPanel();txt = new JTextField(30);// 创建文本框txt.setHorizontalAlignment(JTextField.RIGHT);// 设置文本框的属性为右对齐 JButton bt16 = new JButton("C"); // 初始化计算器按钮,进行复位功能JButton bt7 = new JButton("7");JButton bt8 = new JButton("8");JButton bt9 = new JButton("9");JButton bt13 = new JButton("/");JButton bt4 = new JButton("4");JButton bt5 = new JButton("5");JButton bt6 = new JButton("6");JButton bt12 = new JButton("*");JButton bt1 = new JButton("1");JButton bt2 = new JButton("2");JButton bt3 = new JButton("3");JButton bt11 = new JButton("-");JButton bt0 = new JButton("0");JButton bt14 = new JButton(".");JButton bt15 = new JButton("=");JButton bt10 = new JButton("+");bt0.addActionListener(this);bt1.addActionListener(this);bt2.addActionListener(this);bt3.addActionListener(this);bt4.addActionListener(this);bt5.addActionListener(this);bt6.addActionListener(this);bt7.addActionListener(this);bt8.addActionListener(this);bt9.addActionListener(this);bt10.addActionListener(this);bt11.addActionListener(this);bt12.addActionListener(this);bt13.addActionListener(this);bt14.addActionListener(this);bt15.addActionListener(this);bt16.addActionListener(this);frame.setLayout(new BorderLayout(12, 2));// 边界布局frame.add(p, BorderLayout.NORTH);frame.add(p1, BorderLayout.WEST);frame.add(p2);p.setLayout(new FlowLayout());p2.setLayout(new GridLayout(5, 1, 10, 10));// 网格布局参数依次为(行数,列数,宽度,高度)p2.add(p3);p2.add(p4);p2.add(p5);p2.add(p6);p2.add(p7);p3.setLayout(new GridLayout(1, 3, 10, 10)); p3.add(bt16);p4.setLayout(new GridLayout(1, 5, 10, 10));p4.add(bt7);p4.add(bt8);p4.add(bt9);p4.add(bt13);p5.setLayout(new GridLayout(1, 5, 10, 10)); p5.add(bt4);p5.add(bt5);p5.add(bt6);p5.add(bt12);p6.setLayout(new GridLayout(1, 5, 10, 10)); p6.add(bt1);p6.add(bt2);p6.add(bt3);p6.add(bt11);p7.setLayout(new GridLayout(1, 5, 10, 10)); p7.add(bt0);p7.add(bt14);p7.add(bt15);p7.add(bt10);p.add(txt);p1.setLayout(new GridLayout(5, 1, 10, 10)); frame.setVisible(true);}public void actionPerformed(ActionEvent arg0) {if (arg0.getActionCommand().equals("1")) {if (txt.getText().equals("0"))txt.setText("1");elsetxt.setText(txt.getText() + "1");}if (arg0.getActionCommand().equals("2")) {if (txt.getText().equals("0"))txt.setText("2");elsetxt.setText(txt.getText() + "2");}if (arg0.getActionCommand().equals("3")) { if (txt.getText().equals("0"))txt.setText("3");elsetxt.setText(txt.getText() + "3");}if (arg0.getActionCommand().equals("4")) { if (txt.getText().equals("0"))txt.setText("4");elsetxt.setText(txt.getText() + "4");}if (arg0.getActionCommand().equals("5")) { if (txt.getText().equals("0"))txt.setText("5");elsetxt.setText(txt.getText() + "5");}if (arg0.getActionCommand().equals("6")) { if (txt.getText().equals("0"))txt.setText("6");elsetxt.setText(txt.getText() + "6");}if (arg0.getActionCommand().equals("7")) { if (txt.getText().equals("0"))txt.setText("7");elsetxt.setText(txt.getText() + "7");}if (arg0.getActionCommand().equals("8")) { if (txt.getText().equals("0"))txt.setText("8");elsetxt.setText(txt.getText() + "8");}if (arg0.getActionCommand().equals("9")) { if (txt.getText().equals("0"))txt.setText("9");elsetxt.setText(txt.getText() + "9");}if (arg0.getActionCommand().equals("0")) {if (txt.getText().equals("0"))txt.setText("0");elsetxt.setText(txt.getText() + "0");}if (arg0.getActionCommand().equals(".")) {if (txt.getText().indexOf(".") != -1)txt.setText(txt.getText());elsetxt.setText(txt.getText() + ".");}if (arg0.getActionCommand().equals("C"))// 清空 {txt.setText("");yi = 0;fh = 5;}if (arg0.getActionCommand().equals("/")) {// 除法 yi = Double.valueOf(txt.getText());fh = 3;txt.setText("");}if (arg0.getActionCommand().equals("*")) {// 乘法 yi = Double.valueOf(txt.getText());fh = 2;txt.setText("");}if (arg0.getActionCommand().equals("+")) {// 加法 yi = Double.valueOf(txt.getText());fh = 0;txt.setText("");}if (arg0.getActionCommand().equals("-")) {// 減法 yi = Double.valueOf(txt.getText());fh = 1;txt.setText("");}if (arg0.getActionCommand().equals("=")) {// 等号double er = Double.valueOf(txt.getText());switch (fh) {case 0:jieg = (yi + er);s = String.valueOf(yi) + "+" + String.valueOf(er) + "=" + String.valueOf(jieg);s = null;break;case 1:jieg = (yi - er);s = String.valueOf(yi) + "-" + String.valueOf(er) + "=" + String.valueOf(jieg);s = null;break;case 2:jieg = (yi * er);s = String.valueOf(yi) + "*" + String.valueOf(er) + "=" + String.valueOf(jieg);s = null;break;case 3:jieg = (yi / er);s = String.valueOf(yi) + "/" + String.valueOf(er) + "=" + String.valueOf(jieg);s = null;break;}fh = 5;txt.setText(String.valueOf(jieg));}}public static void main(String agrs[]) {new Calculator();}}。

使用JavaSwing实现简单计算器

使用JavaSwing实现简单计算器

使⽤JavaSwing实现简单计算器import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.Vector;public class main2 {String str1 = "0"; // 运算数1 初值⼀定为0 为了程序的安全String str2 = "0"; // 运算数2String signal = "+"; // 运算符String result = "";// 结果// 状态开关int k1 = 1;// 开关1 ⽤于选择输⼊⽅向将要写⼊str2或 str2int k2 = 1;// 开关2 符号键次数 k2>1说明进⾏的是2+3-9+8 这样的多符号运算int k3 = 1;// 开关3 str1 是否可以被清0 ==1时可以 !=1时不能被清0int k4 = 1;// 开关4 str2 同上int k5 = 1;// 开关5 控制⼩数点可否被录⼊ ==1时可以 !=1 输⼊的⼩数点被丢掉JButton store; // 寄存器记录是否连续按下符号键@SuppressWarnings("rawtypes")Vector vt = new Vector(20, 10);JFrame frame = new JFrame("计算器");JTextField result_TextField = new JTextField(result, 20);// 20列JButton clear_Button = new JButton("清除");JButton button0 = new JButton("0");JButton button1 = new JButton("1");JButton button2 = new JButton("2");JButton button3 = new JButton("3");JButton button4 = new JButton("4");JButton button5 = new JButton("5");JButton button6 = new JButton("6");JButton button7 = new JButton("7");JButton button8 = new JButton("8");JButton button9 = new JButton("9");JButton button_Dian = new JButton(".");JButton button_jia = new JButton("+");JButton button_jian = new JButton("-");JButton button_cheng = new JButton("*");JButton button_chu = new JButton("/");JButton button_dy = new JButton("=");main2() {button0.setMnemonic(KeyEvent.VK_0);// 等效键// 其它等效键略,result_TextField.setHorizontalAlignment(JTextField.RIGHT);// ⽂本框右对齐JPanel pan = new JPanel();pan.setLayout(new GridLayout(4, 4, 5, 5));// 四⾏四列边距为5像素pan.add(button7);pan.add(button8);pan.add(button9);pan.add(button_chu);pan.add(button4);pan.add(button5);pan.add(button6);pan.add(button_cheng);pan.add(button1);pan.add(button2);pan.add(button3);pan.add(button_jian);pan.add(button0);pan.add(button_Dian);pan.add(button_dy);pan.add(button_jia);pan.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));// pan对象的边距JPanel pan2 = new JPanel();pan2.setLayout(new BorderLayout());pan2.add(result_TextField, BorderLayout.WEST);pan2.add(clear_Button, BorderLayout.EAST);frame.setLocation(300, 200); // 主窗⼝出现在位置frame.setResizable(false); // 不能调⼤⼩frame.getContentPane().setLayout(new BorderLayout());frame.getContentPane().add(pan2, BorderLayout.NORTH);frame.getContentPane().add(pan, BorderLayout.CENTER);frame.pack();frame.setVisible(true);// 事件处理程序// 数字键class Listener implements ActionListener {@SuppressWarnings("unchecked")public void actionPerformed(ActionEvent e) {String ss = ((JButton) e.getSource()).getText();store = (JButton) e.getSource();vt.add(store);if (k1 == 1) {if (k3 == 1) {str1 = "";k5 = 1;// 还原开关k5状态}str1 = str1 + ss;k3 = k3 + 1;result_TextField.setText(str1);// 显⽰} else if (k1 == 2) {if (k4 == 1) {str2 = "";k5 = 1; // 还原开关k5状态}str2 = str2 + ss;k4 = k4 + 1;result_TextField.setText(str2);}}}// 符号class Listener_signal implements ActionListener {@SuppressWarnings("unchecked")public void actionPerformed(ActionEvent e) {String ss2 = ((JButton) e.getSource()).getText();store = (JButton) e.getSource();vt.add(store);if (k2 == 1) {k1 = 2;// 开关 k1 为1时,向数1写为2时,向数2写 k5 = 1;signal = ss2;k2 = k2 + 1;// 按符号键的次数} else {int a = vt.size();JButton c = (JButton) vt.get(a - 2);if (!(c.getText().equals("+"))&& !(c.getText().equals("-"))&& !(c.getText().equals("*"))&& !(c.getText().equals("/"))){cal();str1 = result;k1 = 2;// 开关 k1 为1时,向数1写为2时,向数2写 k5 = 1;k4 = 1;signal = ss2;}k2 = k2 + 1;}}}// 清除class Listener_clear implements ActionListener {@SuppressWarnings("unchecked")public void actionPerformed(ActionEvent e) {store = (JButton) e.getSource();vt.add(store);k5 = 1;k2 = 1;k1 = 1;k3 = 1;k4 = 1;str1 = "0";str2 = "0";signal = "";result = "";result_TextField.setText(result);vt.clear();}}// 等于class Listener_dy implements ActionListener {@SuppressWarnings("unchecked")public void actionPerformed(ActionEvent e) {store = (JButton) e.getSource();vt.add(store);cal();k1 = 1; // 还原开关k1状态// str1=result;k2 = 1;k3 = 1;// 还原开关k3状态k4 = 1; // 还原开关k4状态str1 = result; // 为7+5=12 +5=17 这种计算做准备}}// ⼩数点class Listener_xiaos implements ActionListener {@SuppressWarnings("unchecked")public void actionPerformed(ActionEvent e) {store = (JButton) e.getSource();vt.add(store);if (k5 == 1) {String ss2 = ((JButton) e.getSource()).getText();if (k1 == 1) {if (k3 == 1) {str1 = "";k5 = 1; // 还原开关k5状态}str1 = str1 + ss2;k3 = k3 + 1;result_TextField.setText(str1);// 显⽰} else if (k1 == 2) {if (k4 == 1) {str2 = "";k5 = 1; // 还原开关k5状态}str2 = str2 + ss2;k4 = k4 + 1;result_TextField.setText(str2);}}k5 = k5 + 1;}}// 注册监听器Listener_dy jt_dy = new Listener_dy();Listener jt = new Listener();// 临听数字键Listener_signal jt_signal = new Listener_signal();// 临听符号键 Listener_clear jt_c = new Listener_clear(); // 清除键Listener_xiaos jt_xs = new Listener_xiaos();// ⼩数点键button7.addActionListener(jt);button8.addActionListener(jt);button9.addActionListener(jt);button_chu.addActionListener(jt_signal);button4.addActionListener(jt);button5.addActionListener(jt);button6.addActionListener(jt);button_cheng.addActionListener(jt_signal);button1.addActionListener(jt);button2.addActionListener(jt);button3.addActionListener(jt);button_jian.addActionListener(jt_signal);button0.addActionListener(jt);button_Dian.addActionListener(jt_xs);button_dy.addActionListener(jt_dy);button_jia.addActionListener(jt_signal);clear_Button.addActionListener(jt_c);// 关闭事件处理程序frame.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});}// 计算public void cal() {double a2;// 运算数1double b2;// 运算数2String c = signal;// 运算符double result2 = 0;// 结果if (c.equals("")) {result_TextField.setText("请输⼊运算符");} else {if (str1.equals(".")) // 字符串 "." 转换成double型数据时会出错所以⼿⼯转str1 = "0.0";if (str2.equals("."))str2 = "0.0";a2 = Double.valueOf(str1).doubleValue();b2 = Double.valueOf(str2).doubleValue();if (c.equals("+")) {result2 = a2 + b2;}if (c.equals("-")) {result2 = a2 - b2;}if (c.equals("*")) {result2 = a2 * b2;}if (c.equals("/")) {if (b2 == 0) {result2 = 0;} else {result2 = a2 / b2;}}result = ((new Double(result2)).toString());result_TextField.setText(result);}}@SuppressWarnings("unused")public static void main(String[] args) {// 界⾯风格,可以去除try {UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } catch (Exception e) {e.printStackTrace();}main2 cal = new main2();}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档