java图形界面之电子算盘
java图形化界面实现简单混合运算计算器的示例代码

java图形化界⾯实现简单混合运算计算器的⽰例代码写了好⼏天了终于写完了这个四则运算计算器,总代码放在后⾯截图如下:⾸先是布局都⽐较简单,最上⾯的⼀个框是总的输出框,第⼆个框是每次输⼊的数字显⽰在框内,对于每⼀个按钮都增加监听器,对于数字按钮:当长度⼤于8的或者等号已经出现之后就不再处理按钮事件if(e.getSource().equals(button1)) {s=numberText.getText();//数字长度⼤于8或者等号已出现if(s.length()>8 || equalbook == 1) {}else if(s.equals("0") || s.equals("")) {numberText.setText("1");}else {numberText.setText(s + "1");}}其余的按钮都差不多。
当按钮为⼩数点时,长度⼤于7就不再处理,因为总的长度不能超过8,⽽⼩数点后⾯还要与数字,同时标记⼩数点已经出现过,因为⼀个数中最多出现⼀个⼩数点//当按钮为⼩数点时if(e.getSource().equals(buttonpoint)) {s=numberText.getText();if(s.length()>7 || equalbook == 1) {}if(pointbook==0) {numberText.setText(s + ".");pointbook = 1;}}当按钮为加号时:当数字输⼊框为空时不做处理也有可能是最后⼀位是⼩数点,当然也不处理当最上⽅的输出框的最后⼀位是右括号的时候,可以⽤加号//当按钮为加号时if(e.getSource().equals(buttonadd)) {s=numberText.getText();char ch1[] = s.toCharArray();int length1 = s.length() - 1;String S = expressText.getText();char ch2[] = S.toCharArray();int length2 = S.length() - 1;//当数字为空或为0或数字的最后⼀位是⼩数点时不作处理if((length2 == -1 ||ch2[length2] != ')') && (s.equals("0") || s.equals("") || ch1[length1] == '.')) {}else {numberText.setText("");expressText.setText(expressText.getText() + s + "+");}}+, -, *, /都差不多当前⾯是运算符或者左括号的时候才能⽤左括号,注意当框内⽆元素的时候也可以加左括号,但是需要判断元素的个数是否⼤于0if(e.getSource().equals(buttonleft)) {if(!numberText.getText().equals("0") && !numberText.getText().contentEquals("")) {expressText.setText(expressText.getText() + numberText.getText());}s=expressText.getText();char ch[] = s.toCharArray();int length = s.length() - 1;/** 当前⾯是运算符或者左括号的时候才能⽤左括号* 注意当框内⽆元素的时候也可以加左括号* 但是需要判断元素的个数是否⼤于0*/if(length == -1 || ch[length] == '+' || ch[length] == '-' ||ch[length] == '*' || ch[length] == '/' ||ch[length] == '(' || s.equals("")) {expressText.setText(expressText.getText() + '(');leftNum++;}}右括号就不⼀样if(e.getSource().equals(buttonright)) {if(!numberText.getText().equals("0")) {expressText.setText(expressText.getText() + numberText.getText());numberText.setText("");}s=expressText.getText();char ch[] = s.toCharArray();int length = s.length() - 1;/** 只有前⾯是数字的时候且左括* 号的数量⼤于右括号的数量的时候才能加右括号*/if(Character.isDigit(ch[length]) && leftNum > rightNum) {rightNum++;expressText.setText(expressText.getText() + ')');}}当按钮为 C时,清除所有内容并更新等号状态, 左括号数量, 右括号数量, ⼩数点状态,当⼀次计算完成之后,只有按C按钮才能进⾏新的计算。
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计算器程序代码及文档(带异常处理,括号等。注释详细易懂)

四则运算计算器设计说明书一.设计目标本次计算器的程序设计,通过使用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图形化界面实现简单计算器

java图形化界面实现简单计算器package computer;import java.awt.BorderLayout;public class Compuer extends JFrame {private JPanel contentPane;private JTextField textField;private JTextField textField_1;private JTextField textField_2;private JTextField textField_3;/*** Launch the application.*/public static void main(String[] args) {EventQueue.invokeLater(new Runnable() {public void run() {//运行程序时,点击按钮输入公式,当点击等于号时显示出计算结果try {Compuer frame = new Compuer();frame.setVisible(true);Time time=new Time();time.setTime(frame.textField_3);Thread thread=new Thread(time);thread.start();}catch (Exception e) {e.printStackTrace();}}});}/*** Create the frame.*/public Compuer() {setTitle("\u8BA1\u7B97\u5668");setName("");final StringBuffer s=new StringBuffer();setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100, 100, 412, 448);contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));setContentPane(contentPane);contentPane.setLayout(null);textField = new JTextField();textField.setEnabled(false);textField.setLocale(/doc/9518291727. html,);textField.setForeground(Color.PINK);textField.setText("\u6B22\u8FCE\u4F7F\u7528\u8BA1\u7B97\u5668");textField.setBounds(10, 20, 368, 30);contentPane.add(textField);textField.setColumns(10);textField_1 = new JTextField();//文本框textField_1,显示公式textField_1.setBounds(10, 102, 368, 30);contentPane.add(textField_1);textField_1.setColumns(10);textField_2= new JTextField();//文本框textField_2.显示计算结果textField_2.setBounds(10, 142, 368, 30);contentPane.add(textField_2);textField_2.setColumns(10);textField_3 = new JTextField();//文本框textField_3,显示电子表textField_3.setForeground(new Color(205, 133, 63));textField_3.setBounds(10, 60, 368, 30);contentPane.add(textField_3);textField_3.setColumns(10);//按钮'清零',监听到按钮后清零JButton btnC = new JButton("\u6E05\u96F6");btnC.setForeground(Color.RED);btnC.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {textField_1.setT ext("");textField_2.setT ext("");s.delete(0, s.length());}});btnC.setBounds(10, 182, 183, 44);contentPane.add(btnC);//按钮'退格',监听到按钮后退格JButton button_16 = new JButton("\u9000\u683C");button_16.setForeground(Color.RED);button_16.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { s.delete(s.length()-1, s.length());String str=s.toString();textField_1.setT ext(str);}button_16.setBounds(193, 182, 185, 44); contentPane.add(button_16);//按钮'*',监听到按钮后显示*JButton button_1 = new JButton("*");button_1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { s.append('*');String str=s.toString();textField_1.setT ext(str);}});button_1.setBounds(285, 271, 93, 44);contentPane.add(button_1);//按钮'6',监听到按钮后显示6JButton button_2 = new JButton("6");button_2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { s.append('6');String str=s.toString();textField_1.setT ext(str);}});button_2.setBounds(193, 271, 93, 44);contentPane.add(button_2);//按钮'5',监听到按钮后显示5JButton button_3 = new JButton("5");button_3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { s.append('5');String str=s.toString();textField_1.setT ext(str);}button_3.setBounds(100, 271, 93, 44);contentPane.add(button_3);//按钮'4',监听到按钮后显示4button_4.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { s.append('4');String str=s.toString();textField_1.setT ext(str);}});button_4.setBounds(10, 271, 93, 44);contentPane.add(button_4);//按钮'-',监听到按钮后显示-JButton button_5 = new JButton("-");button_5.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { s.append('-');String str=s.toString();textField_1.setT ext(str);}});button_5.setBounds(285, 313, 93, 44); contentPane.add(button_5);//按钮'3',监听到按钮后显示3JButton button_6 = new JButton("3");button_6.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { s.append('3');String str=s.toString();textField_1.setT ext(str);}});button_6.setBounds(193, 313, 93, 44); contentPane.add(button_6);//按钮'2',监听到按钮后显示2JButton button_7 = new JButton("2");button_7.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { s.append('2');String str=s.toString();textField_1.setT ext(str);}});button_7.setBounds(100, 313, 93, 44); contentPane.add(button_7);//按钮'1',监听到按钮后显示1button_8.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {s.append('1');String str=s.toString();textField_1.setT ext(str);}});button_8.setBounds(10, 313, 93, 44);contentPane.add(button_8);//按钮'+',监听到按钮后显示+JButton button_9 = new JButton("+");button_9.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {s.append('+');String str=s.toString();textField_1.setT ext(str);}button_9.setBounds(285, 355, 93, 44); contentPane.add(button_9);//按钮'=',点击按钮'=',将计算出结果**********************************JButton button_10 = new JButton("=");button_10.setForeground(Color.RED);button_10.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String str=s.toString();String ss=str;String index="[-]|[+]|[/]|[*]";String number[]=str.split(index);int count=number.length;double num[]=new double[count];for(int i=0;i<count;i++){< p="">num[i]=Double.parseDouble(number[i]);}double result=0;if(ss.contains("+")){result=num[0];for(int i=1;i<count;i++){< p="">result+=num[i];}}if(ss.contains("-")){result=num[0];for(int i=1;i<count;i++){< p="">result-=num[i];}if(ss.contains("*")){result=num[0];for(int i=1;i<count;i++){< p="">result*=num[i];}}if(ss.contains("/")){result=num[0];for(int i=1;i<count;i++){< p="">if(num[i]==0){//除数等于0时,显示错误信息textField_2.setT ext("出错");return;}else {result/=num[i];}}}//int i=(int)Math.round(result*100);//result=(double)i/100;textField_2.setT ext(""+result);}});button_10.setBounds(193, 355, 93, 44); contentPane.add(button_10);//按钮'.',监听到按钮后显示。
Java实现简易计算器

Java实训作业题目:Java实现简易计算器学院:姓名:学号:班级:20 年月一、实验目的通过课程设计,主要要达到两个目的,一是检验和巩固专业知识、二是提高综合素质和能力。
此次课程设计实训主要是Java语言程序设计的实现。
通过该课程设计,可以将课堂上掌握的理论知识与处理数据的业务相结合,以检验自己掌握知识的宽度、深度及对知识的综合运用能力。
二、实验要求用Java编写一个简单的计算器,使其能够实现最基本的功能,如简单的加、减、乘、除;平方根,倒数,平方等功能。
三、详细内容1.界面设计界面设计使用GUI,其中有用到swing组件的TextField和Button,用到awt中的BorderLayout和GridLayout布局管理方式,其图形界面如图1-1所示:图1-1其中主要代码为:public mainWindow(){this.setTitle("计算器");//用户图形界面标题this.setVisible(true);//用户图形界面可缩小this.setResizable(false);//用户图形界面不可放大this.setSize(350,300);//设置用户图形界面的大小this.setLocation(400,150);//用户图形界面在屏幕中的显示位置JPanel panel1 = new JPanel();//新建一个画板JPanel panel2 = new JPanel();button1 = new JButton("1");...reset = new JButton("CE");Container container = this.getContentPane();container.add(panel2,BorderLayout.NORTH);container.add(panel1);panel1.setLayout(new GridLayout(5,4));//将画板1分为4行5列result.setEnabled(false);result.setFont(new Font("Dialog",Font.BOLD,25));//运算结果的字体大小result.setEditable(false);result.setHorizontalAlignment(SwingConstants.RIGHT);panel1.add(reciprocal);//分别将20个按钮依次添加到画板panel1中,并设置各自的大小reciprocal.setFont(new Font("Dialog",Font.PLAIN,20));...panel1.add(divide);divide.setFont(new Font("Dialog",Font.PLAIN,20));panel2.setLayout(new GridLayout());panel2.add(result);//画板panel2添加运算结果2.四则运算较为简单的实现了简单的加、减、乘、除运算,主要代码如下:ActionListener equal1 = new ActionListener(){ //实现四则运算public void actionPerformed(ActionEvent e){String str = result.getText();b = DatatypeConverter.parseDouble(str);{if(flag == "+")c = a + b;else if(flag == "-")c = a - b;else if(flag == "*")c = a * b;else if(flag == "/" || b != 0)c = a / b;}if(flag != "=")result.setText("" + c);elseresult.setText("零不能做除数!");a = 0;b = 0;c = 0;flag = "";}};3.其他功能另外添加了平方根,倒数,平方等功能,主要代码如下:平方根运算的实现:ActionListener sqrt1= new ActionListener(){public void actionPerformed(ActionEvent e){String str = result.getText();double i = DatatypeConverter.parseDouble(str);i = Math.sqrt(i);result.setText("" + i);}};倒数运算的实现:ActionListener reciprocal1 = new ActionListener(){ public void actionPerformed(ActionEvent e){String str = result.getText();double i = DatatypeConverter.parseDouble(str);i = 1/i;result.setText("" + i);}};平方运算的实现:ActionListener square1 = new ActionListener(){public void actionPerformed(ActionEvent e){String str = result.getText();double i = DatatypeConverter.parseDouble(str);i = i*i;result.setText("" + i);}};4.程序测试经测试发现本计算器基本功能均能实现,可正常运行计算,针对功能实现的代码部分过于简单,可以对其进行改善提高,方便用户使用!5.实训小结通过对计算器窗体的编写,熟悉了java图形用户界面的设计原理和程序结构,熟悉了java中awt和swing的组合。
JAVA中用GUI编程实现计算器模拟

JA V A中用GUI编程实现计算器模拟摘要:本文论述了用java对计算器程序进行需求分析、概要设计、详细设计,最后使用Java编程实现的全过程。
设计GUI界面的计算器,用户可以通过鼠标依次输入参加计算的数值,进行加、减、乘、除及求负、取余等,主要用到的组件有框架、面板、文本框、按钮和菜单栏等。
关键词:GUI 计算器一.编程思想定义计算器类calculator,该类继承JFrame类并实现ActionListener接口。
整体窗口采用边界布局,通过另外建立若干面板组件。
North位置的面板上放置一个文本框,用于显示运算中的数据及结果;center位置放置两个按钮,分别用来返回原界面和清零。
再用GridLayout(网格布局)对数字控件和操作按钮进行布局。
此外,单击任何一个按钮都会触发ActionEvent事件,要处理这些事件就必须实现ActionListener接口的actionPerformed方法。
二.程序代码如下import javax.swing.*;import javax.swing.event.*;import java.awt.*;import java.awt.event.*;//变量设置如下//继承JFrame类并实现ActionListenter接口public class calculator extends JFrame implements ActionListener{JFrame frame;//数字及操作按钮JButton num0,num1,num2,num3,num4,num5,num6,num7,num8,num9,Back,c;//运算按钮JButtonplusButton,minusButton,multiplyButton,divideButton,residueButton,equalButton,changeButton,d otButton,sqrtButton,reciprocalButton;JMenu fileM;JMenuItem exitM,helpM;JTextField text;//状态变量boolean clicked=true;boolean clear=true;int all=0;double previous;String fuhao;int first=1;//界面设计public calculator(){setTitle("计算器");setSize(300,250);setLocation(400,400);text=new JTextField(25);text.setHorizontalAlignment(JTextField.LEFT);JPanel cp1=new JPanel();JPanel cp2=new JPanel();JPanel cp3=new JPanel();//设置整体布局getContentPane().add(cp1,"North");getContentPane().add(cp2,"Center");getContentPane().add(cp3,"South");cp1.setLayout(new GridLayout(1,1));cp2.setLayout(new GridLayout(1,2));cp3.setLayout(new GridLayout(5,4));plusButton=new JButton("+");//加minusButton=new JButton("-");//减multiplyButton=new JButton("*");//乘divideButton=new JButton("/");//除residueButton=new JButton("%");//余数equalButton=new JButton("=");//等号changeButton=new JButton("+/-");//正负号切换dotButton=new JButton(".");//小数点sqrtButton=new JButton("sqrt");//开方reciprocalButton=new JButton("1/x");//倒数//数字按钮num0=new JButton("0");num1=new JButton("1");num2=new JButton("2");num3=new JButton("3");num4=new JButton("4");num5=new JButton("5");num6=new JButton("6");num7=new JButton("7");num8=new JButton("8");num9=new JButton("9");cp1.add(text);text.setEditable(false);text.setBackground(Color.white);//监听设置Back=new JButton("Back");Back.addActionListener(this);c=new JButton("C");c.addActionListener(this);cp2.add(Back);cp2.add(c);cp3.add(num7);num7.addActionListener(this);cp3.add(num8);num8.addActionListener(this);cp3.add(num9);num9.addActionListener(this);cp3.add(divideButton); divideButton.addActionListener(this);cp3.add(num4);num4.addActionListener(this);cp3.add(num5);num5.addActionListener(this);cp3.add(num6);num6.addActionListener(this);cp3.add(multiplyButton); multiplyButton.addActionListener(this); cp3.add(num1);num1.addActionListener(this);cp3.add(num2);num2.addActionListener(this);cp3.add(num3);num3.addActionListener(this);cp3.add(minusButton); minusButton.addActionListener(this);cp3.add(num0);num0.addActionListener(this);cp3.add(changeButton); changeButton.addActionListener(this); cp3.add(dotButton);dotButton.addActionListener(this);cp3.add(plusButton);plusButton.addActionListener(this);cp3.add(reciprocalButton); reciprocalButton.addActionListener(this); cp3.add(residueButton); residueButton.addActionListener(this); cp3.add(sqrtButton);sqrtButton.addActionListener(this);cp3.add(equalButton);equalButton.addActionListener(this);//添加菜单组件JMenuBar mainMenu= new JMenuBar();setJMenuBar(mainMenu);JMenu editMenu=new JMenu("文件");JMenu helpMenu=new JMenu("帮助");helpM= new JMenuItem("关于");mainMenu.add(editMenu);mainMenu.add(helpMenu);helpMenu.add(helpM);helpM.addActionListener(this);fileM=new JMenu(" 文件");exitM=new JMenuItem(" 退出");fileM.addActionListener(this);exitM.addActionListener(this);editMenu.add(fileM);editMenu.add(exitM);setVisible(true);addWindowListener(new WindowDestroyer());//结束窗口}//响应动作代码public void actionPerformed(ActionEvent e){if (first ==1)text.setText("");first=0;Object temp=e.getSource();if (temp==exitM)System.exit(0);if (temp==helpM)JOptionPane.showMessageDialog(null,"请查看帮助文档","帮助", RMA TION_MESSAGE);//退格if (temp== Back){String s=text.getText();text.setText("");for (int i=0;i<s.length()-1;i++){char a=s.charAt(i);text.setText(text.getText()+a);}}//清零if (temp==c){text.setText("0.");clear=true;first=1;}if (temp==num0){//判断是否单击了符号位if (clear==false)text.setText("");text.setText(text.getText()+"0"); }if (temp==num1){if (clear==false)text.setText("");text.setText(text.getText()+"1");clear=true;}if (temp==num2){if (clear==false)text.setText("");text.setText(text.getText()+"2");clear=true;}if (temp==num3){if (clear==false)text.setText("");text.setText(text.getText()+"3");clear=true;}if (temp==num4){if (clear==false)text.setText("");text.setText(text.getText()+"4");clear=true;}if (temp==num5){if (clear==false)text.setText("");text.setText(text.getText()+"5");clear=true;}if (temp==num6){if (clear==false)text.setText("");text.setText(text.getText()+"6");clear=true;}if (temp==num7){if (clear==false)text.setText("");text.setText(text.getText()+"7");clear=true;}if (temp==num8){if (clear==false)text.setText("");text.setText(text.getText()+"8");clear=true;}if (temp==num9){if (clear==false)text.setText("");text.setText(text.getText()+"9");clear=true;}//判断是否含有小数点if (temp == dotButton){clicked=true;for (int i=0;i<text.getText().length();i++)if ('.'==text.getText().charAt(i)){clicked = false;break;}if (clicked == true)text.setText(text.getText()+".");}try{if (temp==plusButton){previous=Double.parseDouble(text.getText());fuhao="+";clear=false;}if (temp==minusButton){previous=Double.parseDouble(text.getText());fuhao="-";clear=false;}if (temp==multiplyButton){previous=Double.parseDouble(text.getText());fuhao="*";clear=false;}if (temp==divideButton){previous=Double.parseDouble(text.getText());fuhao="/";clear=false;}if (temp==equalButton){double next = Double.parseDouble(text.getText());text.setText("");if (fuhao =="+")text.setText(previous + next +"");if (fuhao =="-")text.setText(previous - next +"");if (fuhao =="*")text.setText(previous * next +"");if (fuhao =="/")if (next==0)text.setText("除数不能为零");elsetext.setText(previous + next +"");if (fuhao =="%")text.setText(previous % next +"");clear=false;}if (temp==sqrtButton){String s=text.getText();if (s.charAt(0)== '-')text.setText("负数不能开根号");elsetext.setText(Double.toString(ng.Math.sqrt(Double.parseDouble(text.getText()))));clear = false;}if (temp==reciprocalButton){if (text.getText().charAt(0)=='0'&& text.getText().length()==1)text.setText("除数不能为零");else{boolean isDec = true;int i,j,k;String s=Double.toString(1/Double.parseDouble(text.getText()));for (i=0;i<s.length();i++)if (s.charAt(i)=='.')break;for (j=i+1;j<s.length();j++)if (s.charAt(j)=='0'){isDec=false;break;}if (isDec == true){String stemp = "";for (k=0;k<i;k++)stemp += s.charAt(k);text.setText(stemp);}elsetext.setText(s);}clear = false;}if ( temp == residueButton){previous=Double.parseDouble(text.getText());fuhao="%";clear=false;}if ( temp == changeButton){boolean isNumber = true;String s = text.getText();for (int i=0;i<s.length();i++)if (!(s.charAt(i)>= '0'&& s.charAt(i)<= '9' ||s.charAt(i)>= '.'||s.charAt(i)>= '-' )){isNumber = false;break;}if (isNumber == true)//切换‘-’号{if (s.charAt(0) == '-'){text.setText("");for (int i=1;i<s.length();i++){char a=s.charAt(i);text.setText(text.getText()+ a);}}elsetext.setText('-'+ s);}}}catch (Exception e3){text.setText("There is a wrong");clear = false;}}//关闭窗口class WindowDestroyer extends WindowAdapter{public void windowClosing(WindowEvent e){System.exit(0);}}public static void main(String arg[]){JFrame.setDefaultLookAndFeelDecorated(true);calculator cal = new calculator();}}三.程序运行结果如下图图3-1 计算器界面四.总结该程序显示GUI用户界面,既能实现实数的加、减、乘、除四则运算,也能进行开方、求余、倒数以及正负号转换的运算。
利用Java图形界面制作简单的计算器

利用Java图形界面制作简单的计算器利用Java图形界面制作简单的计算器,第一构思需要的组件,构思好以后进行版面设计,最后在Java编译器中输入代码,进行调试。
代码如下:import .*;import class Feiyong implements ActionListener{Frame f;Panel p1,p2,p3;Label lbl1,lbl2,lbl3;TextField tf1,tf2,tf3;Button btn1,btn2;CheckboxGroup cbg;Checkbox cbg1,cbg2,cbg3,cbg4;double Feiyong;public static void main(String args[]){Feiyong feiyong=new Feiyong();();}public void go(){f=new Frame("计算各类费用");(400,180);p1=new Panel();p2=new Panel();p3=new Panel();tf1=new TextField(10);lbl1=new Label("所用数量:");lbl2=new Label("总价:");tf3=new TextField(10);lbl3=new Label("单价:");btn1=new Button("计算");btn2=new Button("终止");(lbl1);(tf1);(lbl3);(tf3);cbg=new CheckboxGroup();cbg1=new Checkbox("水费",true,cbg);cbg2=new Checkbox("电费",false,cbg);cbg3=new Checkbox("煤气费",false,cbg);cbg4=new Checkbox("费",false,cbg);tf2=new TextField(10);(cbg1);(cbg2);(cbg3);(cbg4);(lbl2);(tf2);(btn1);(btn2);(this);(this);(p1,"North");(p2,"Center");(p3,"South");(true);}public void actionPerformed(ActionEvent ae) {String yy,ll,total;double ab,cd;yy=();if("计算")){yy=();ll=();ab=(yy);cd=(ll);if()==true)Feiyong=ab*cd;if()==true)Feiyong=ab*cd;if()==true)Feiyong=ab*cd;if()==true)Feiyong=ab*cd;total=(Feiyong);(total);}else{ (0);}}}制作出来以后,碰运气计算器做的对不对:。
使用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集成开发环境。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java图形用户界面院系: 计算机系姓名:后人好乘凉一实验目的●使学生综合运用图形用户界面设计的概念;●使学生熟悉使用中间面板,组成层次复杂的GUI界面;●使学生掌握使用事件驱动编程;二实验环境及实验准备●所需硬件环境为微机;●所需软件环境为JDK、Eclipse;●掌握Java下界面容器与基本组件的基本知识与应用;●掌握Java下事件处理模型;●掌握Java下图形绘制的方法;三实验内容(一)、设计实现电子算盘,并完成测试;[题目描述及要求] 给小朋友设计一个电子算盘。
要求绘制电子算盘界面,设计并实现打珠算过程(界面参考如下图示)。
电子算盘参考界面示意程序源代码:package calculator;import java、awt、Color; //导入import java、awt、GridLayout;import java、awt、Container;import javax、swing、JLabel;import javax、swing、JButton;import javax、swing、ImageIcon;import javax、swing、JPanel;import javax、swing、JFrame;import javax、swing、JTextField;import java、awt、event、*;public class Calculator extends JFrame{public int totalNumber;public int t = 0;public boolean[] isAddFive = new boolean[5];public int number[] = new int[5];public ImageIcon picture = new ImageIcon(System、getProperty("user、dir") + "/算珠、jpg" ); //添加图片public ImageIcon picture1= new ImageIcon(System、getProperty("user、dir") + "/算珠1、jpg" );Container con = getContentPane();JPanel j1 = new JPanel();JPanel j2 = new JPanel();JPanel j3 = new JPanel();JPanel time=new JPanel();JLabel q = new JLabel();JLabel nA = new JLabel();JLabel Time=new JLabel(new ImageIcon("、/时钟、jpg")); //添加时钟标签的图片JTextField a = new JTextField();JButton Buttons_1[][] = new JButton[2][5];JButton Buttons_2[][] = new JButton[5][5];GridLayout gl_1 = new GridLayout(2,5);GridLayout gl_2 = new GridLayout(5,5);GridLayout gl_3 =new GridLayout();public Calculator(){super("电子算盘");setDefaultCloseOperation(JFrame、EXIT_ON_CLOSE);setBounds(100,100,600,400);setVisible(true);setLayout(null);AbacusPanel();}public void AbacusPanel() // 算盘面板{j1、setLayout(null);j1、setBounds(15,60,400,300);j1、setBackground(Color、blue);con、add(j1);JPanel j2 = new JPanel();j2、setLayout(gl_1);j2、setBounds(10, 10, 380, 80);j1、add(j2);JPanel j3 = new JPanel();j3、setLayout(gl_2);j3、setBounds(10, 100, 380, 190);j1、add(j3);time、setLayout(gl_3);time、setBounds(430,220,130,130); //时钟面板大小time、setBackground(Color、white); //时钟面板颜色time、add(Time);//添加时钟标签con、add(time);for(int i = 0;i < 2;i++){for(int j = 0;j < 5;j++){Buttons_1[i][j] = new JButton("");Buttons_1[i][j]、addActionListener(new ClickIt());Buttons_1[i][j]、setBorderPainted(false);Buttons_1[i][j]、setContentAreaFilled(false);if(i != 1)Buttons_1[i][j]、setIcon(picture1);j2、add(Buttons_1[i][j]);}}for(int i = 0;i < 5;i++){for(int j = 0;j < 5;j++){Buttons_2[i][j] = new JButton("");Buttons_2[i][j]、addActionListener(new ClickIt());Buttons_2[i][j]、setBorderPainted(false);Buttons_2[i][j]、setContentAreaFilled(false);if(i != 0)Buttons_2[i][j]、setIcon(picture);j3、add(Buttons_2[i][j]);}}}private void addTotalNumber() // 计算算盘的结果{for(int j = 0;j < 5;j++){if(isAddFive[j] == true && number[j] <5)number[j] = number[j] + 5;elseif(isAddFive[j] == false && number[j] >= 5)number[j] = number[j] - 5;}totalNumber = 0;for(int j = 0;j < 5;j++){totalNumber = totalNumber + number[j] * (int)Math、pow(10,(double)j);}System、out、println(totalNumber);}private void DrawCol(int j) // 绘制j列算珠{for(int i = 1; i <=4;i++){B uttons_2[i][j]、setIcon(picture);}}class ClickIt implements ActionListener // 单击事件监听器 {public void actionPerformed(ActionEvent e){for(int i = 0;i < 2;i++)for(int j = 0;j < 5;j++)if(e、getSource() == Buttons_1[i][j]){if(i == 1){isAddFive[5-j-1] = false;Buttons_1[0][j]、setIcon(picture1);Buttons_1[1][j]、setIcon(null);}elseif(i == 0){isAddFive[5-j-1] = true;Buttons_1[1][j]、setIcon(picture1);Buttons_1[0][j]、setIcon(null); }}for(int i = 0;i <= 4;i++) // 点击后动作for(int j = 0;j < 5;j++)if(e、getSource() == Buttons_2[i][j]){number[5-j-1] = i;DrawCol(j);Buttons_2[0][j]、setIcon(picture);Buttons_2[i][j]、setIcon(null);}addTotalNumber();}}public static void main(String[] args) {// TODO Auto-generated method stubCalculator f = new Calculator();}}运行结果截图程序流程图(二)、以(一)中的电子算盘为基础,设计并实现珠算测试器,并完成测试。
[题目描述及要求]给小朋友设计一个珠算测试器,要求能够完成珠算加减法的测试。
具体的要求功能如下: (1) 用户启动测试,输入用户名后系统随机生成特定数目的加减法测试题;(2) 要求测试使用表盘式或数字时秒表进行界面计时显示(参考如上图示); (3) ,要求用户使用电子算盘完成珠算过程,当按下确认键时,将珠 算结果与正确答案比对,并在界面上显示总题数、已答题数与已做对题数;(4) 当测试完成,界面显示本次测试情况(包括用户名、测试题目及答题明细、对错情 况、测试用时与测试成绩)程序源代码package testcal; import java 、awt Color; //导入import java 、awt Font;import java 、awt GridLayout;import java 、awt Container;import javax 、swing 、JLabel; import javax 、swing 、JButton;import javax 、swing 、ImageIcon;import javax 、swing 、JOptionPane; 开 始添加框架输出电子算盘结 束添加时钟Label,并添加图片 添加单击事件监听器及单击后动作 添加面板j1、j2、j3实现算盘分块 按面板j2、j3上划分好的网格结构添加按钮及图片。