Java实战项目__简易计算器
来源:互联网 发布:数据分析所用的方法 编辑:程序博客网 时间:2024/06/05 21:13
java小项目 ------计算器
GUI初步编程:
主要是显示一个窗口,
堆积一些基本组件
处理基本事件
主类代码:
package Display_Interface;import java.awt.Color;public class Main_interface {public static void main(String [] args){//为了更好的体现封装的特点,文本框和按钮的监视器应该分别封装//菜单栏,待完善Windows win = new Windows();win.setBounds(300, 20, 360, 680);win.getContentPane().setBackground(Color.LIGHT_GRAY);//如果对象直接调用setBackground()更改的是框架的颜色}}
界面类:
package Display_Interface;//其他功能,菜单中单位转化,一个显示即是时间的面板import java.awt.event.*;import javax.swing.*;import java.util.StringTokenizer;@SuppressWarnings("serial")public class Windows extends JFrame{//用于计算和数据处理String s1 = "",s2 = "";//暂时存放从文本框获取的字符串,用于转换成数字int tmp = 0;//控制文本框追加选择,默认为0,获得字符后重置为1,追加到第三个文本框double finalAnswer = 0.0;//最终答案,用于输出到textarea[0]String symbol=""; //获得的运算符的字符串char operator[]; //控制获得的运算符 Double getNum[];//从输入的字符串中逐一提取数字//组件JLabel label[] = new JLabel[2]; //标签JMenuBar menubar; //菜单条JMenu menu[] = new JMenu[5]; //创建长度为5菜单数组JButton button[] = new JButton[17]; //创建动作按钮动作JTextArea textarea[] = new JTextArea[4]; //文本区域//构造方法,初始化窗口public Windows(){setLayout(null); //自定义布局set_TextArea(); //文本区域set_Button(); //按钮布局set_Label(); //标签布局 set_Menu(); //菜单选项init_Listener(); //注册监视器setTitle("Calculator"); //设置标题setVisible(true); //设置可见setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭窗口操作}// 为按钮,键盘,等号键注册相应监视器void init_Listener() {//为数字按钮注册监视器System.out.println(finalAnswer);for (int i = 1; i <= 10; i++)button[i].addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {getNum = new Double[2];if(tmp == 0){textarea[0].append(e.getActionCommand());s1 += e.getActionCommand();}if(tmp == 1) {textarea[2].append(e.getActionCommand());s2 += e.getActionCommand();}}});//创建两个文本框,在两个文本框中间键入一个新的文本框 ,用于获得运算符,//处理时,先将两个数字文本框获取的数字存入浮点型的数组中,然后将字符文本框中获得的字符存入字符//operator中,使用switch语句,将四种情况分别处理//缺点:不能进行多位数的操作,以及多位数数字的复合运算//其他功能,单位转换,求一元二次函数的结果//另外//添加一个新的面板,用于显示当前的时间,实时刷新,调用多线程.// 为等号创建单独的监视器button[16].addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {//获得存放运算符号的字符数组operator = symbol.toCharArray();//获得数字getNum[0] = Double.valueOf(s1);getNum[1] = Double.valueOf(s2);System.out.println("getNum[0] = "+getNum[0]+"\ngetNum[1] = "+getNum[1]);//debug过程,在case语句中忘记加break语句switch(operator[0]){case '+':{finalAnswer = getNum[0]+getNum[1];break;}case '-':{finalAnswer = getNum[0]-getNum[1];break;}case '×':{finalAnswer = getNum[0]*getNum[1];break;}case '÷':{finalAnswer = getNum[0]/getNum[1];break;}}System.out.println("finalAnswer = "+finalAnswer);textarea[3].append(String.valueOf(finalAnswer));}});// 为AC创建监视器button[0].addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {//清空文本框textarea[0].setText(null);textarea[1].setText(null);textarea[2].setText(null);textarea[3].setText(null);//运算符重置symbol = "";//将tmp置于0,再次追加字符时,置于textarea[0]tmp = 0;//将从文本框中获取的数字重置为0s1 = "";s2 = "";System.out.println("重置后getNum[0] = "+getNum[0]+"\ngetNum[1] = "+getNum[1]);}});// 为运算符创建监视器//特殊处理,若两次点击加号或者两个数字重置问题for (int i=11; i<=14; i++) {button[i].addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {//symbol字符串中只保存最后一次点击的运算符//因此每次处理事件时,都将symbol字符串重置为空symbol = "";symbol = e.getActionCommand();//显示的操作符只能有一个,因此每次都重置为nulltextarea[1].setText(null);textarea[1].append(e.getActionCommand());//将运算符存入字符数组中operator = symbol.toCharArray();tmp = 1;}});}}//内部类,从键盘获取字符class Key_listener implements KeyListener,FocusListener{public void keyPressed(KeyEvent e) {textarea[0]=(JTextArea)e.getSource();}public void keyTyped(KeyEvent e) {}public void keyReleased(KeyEvent e) {}public void focusGained(FocusEvent e) {textarea[0]=(JTextArea)e.getSource();}public void focusLost(FocusEvent e){}}//设置文本框,用于显示结果和过程void set_TextArea(){//文本区初始化,并将文本加入到面板textarea[0] = new JTextArea(9,10);textarea[1] = new JTextArea(9,10);textarea[2] = new JTextArea(9,10);textarea[3] = new JTextArea(9,10);add(textarea[0]);add(textarea[1]);add(textarea[2]);add(textarea[3]);//文本区设置位置textarea[0].setBounds(20, 60, 70, 30);//第一个操作数textarea[1].setBounds(120, 60, 40, 30);//运算符textarea[2].setBounds(190, 60, 70, 30);//第二个操作数textarea[3].setBounds(20, 140, 300, 30);//显示运算结果}//嵌入菜单栏,菜单项void set_Menu(){menubar = new JMenuBar();add(menubar);menu[0] = new JMenu("菜单一");menu[1] = new JMenu("菜单二");menu[2] = new JMenu("菜单三");menu[3] = new JMenu("菜单四");menu[4] = new JMenu("菜单五");for(int i = 0; i < 5; i++)menubar.add(menu[i]);setJMenuBar(menubar);//将菜单添加到面板}//设置标签,安排布局void set_Label(){//标签初始化label[0] = new JLabel("运算过程:");label[1] = new JLabel("运算结果:");//将标签添加到底层容器for(int i = 0; i < 2; i++){add(label[i]);}//标签的布局label[0].setBounds(20, 20, 65, 30);label[1].setBounds(20, 100, 65, 30);}//添加按钮,安排布局void set_Button(){button[0] = new JButton("AC");button[0].setBounds(20, 220, 140, 60);//acbutton[1] = new JButton("7");button[2] = new JButton("8");button[3] = new JButton("9");button[1].setBounds(20, 300, 60, 60);//7button[2].setBounds(100, 300, 60, 60);//8button[3].setBounds(180, 300, 60, 60);//9button[4] = new JButton("4");button[5] = new JButton("5");button[6] = new JButton("6");button[4].setBounds(20, 380, 60, 60);button[5].setBounds(100, 380, 60, 60);button[6].setBounds(180, 380, 60, 60);button[7] = new JButton("1");button[8] = new JButton("2");button[9] = new JButton("3");button[7].setBounds(20, 460, 60, 60);button[8].setBounds(100, 460, 60, 60);button[9].setBounds(180, 460, 60, 60);button[10] = new JButton("0");button[10].setBounds(20, 540, 140, 60);button[11] = new JButton("+");button[12] = new JButton("-");button[13] = new JButton("×");button[14] = new JButton("÷");button[11].setBounds(260, 220, 60, 60);button[12].setBounds(260, 300, 60, 60);button[13].setBounds(260, 380, 60, 60);button[14].setBounds(260, 460, 60, 60);button[15] = new JButton(".");button[16] = new JButton("=");button[15].setBounds(180, 540, 60, 60);button[16].setBounds(260, 540, 60, 60);//将按钮加入到容器for (int i = 0; i < 17; i++){add(button[i]);}}}
运行结果:
阅读全文
0 0
- Java实战项目__简易计算器
- swift 项目 简易计算器
- 实战——简易计算器
- java web简易博客项目实战简述
- Java简易计算器V1.0-第一个Java GUI项目
- 简易Java控制台计算器
- Java简易计算器
- Java 简易计算器程序
- 一个Java简易计算器
- Java—简易计算器
- JAVA编写简易计算器
- 简易计算器(JAVA)
- JAVA实现简易计算器
- java 简易计算器代码
- java简易计算器
- java实现简易计算器
- java简易计算器
- java简易计算器
- Error:Execution failed for task ':app:compileDebugJavaWithJavac' 根本解决方法
- HttpServletRequest 使用总结
- day01-面向对象【阶段一知识回顾、继承】
- php 合并数组array_merge与+ 的区别
- JSTL标签库的常用操作
- Java实战项目__简易计算器
- python_逻辑运算_赋值运算
- day02-面向对象【重写、this、super,抽象类】
- 学习淘淘商城第一课
- Bean property '***' is not writable or has an invalid setter method.
- python 模块,类和全局函数---命名空间;继承和装饰器总结
- HDOJ 1203 I NEED A OFFER!
- 编译原理三大经书
- 利用ViewDragHelper轻松实现Android拼图游戏