【java图形计算器】 java awt swing组件应用
package package1; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import java.util.LinkedList; import java.text.NumberFormat; public class Computer extends Frame implements ActionListener{ NumberButton numberButton[]; OperationButton operationButton[]; Button 小数点按钮 , 正负号按钮 , 退格按钮 , 求倒数按钮 , 等号按钮 , 清零按钮 ; Panel panel; JTextField resultShow; String 运算符号[]={"+","-","*","/"}; LinkedList linklist; boolean 是否按下等号=false; public Computer(){ super("科学计算器"); linklist=new LinkedList(); numberButton=new NumberButton[10]; for(int i=0;i<=9;i++){ numberButton[i]=new NumberButton(i); numberButton[i].addActionListener(this); } operationButton=new OperationButton[4]; for(int i=0;i<=3;i++){ operationButton[i]=new OperationButton(运算符号[i]); operationButton[i].addActionListener(this); } 退格按钮=new Button("back"); 清零按钮=new Button("C"); 等号按钮=new Button("="); 小数点按钮=new Button("."); 正负号按钮=new Button("+/-"); 求倒数按钮=new Button("1/x"); 退格按钮.setForeground(Color.red); 清零按钮.setForeground(Color.red); 等号按钮.setForeground(Color.red); 小数点按钮.setForeground(Color.blue); 正负号按钮.setForeground(Color.blue); 求倒数按钮.setForeground(Color.blue); 退格按钮.addActionListener(this); 清零按钮.addActionListener(this); 等号按钮.addActionListener(this); 小数点按钮.addActionListener(this); 正负号按钮.addActionListener(this); 求倒数按钮.addActionListener(this); resultShow=new JTextField(10); resultShow.setHorizontalAlignment(JTextField.RIGHT); resultShow.setForeground(Color.blue); resultShow.setFont(new Font("TimeRoman",Font.PLAIN,14)); resultShow.setBorder(new SoftBevelBorder(BevelBorder.LOWERED)); resultShow.setBackground(Color.white); resultShow.setEditable(false); panel=new Panel(); panel.setLayout(new GridLayout(4,5)); panel.add(numberButton[1]); panel.add(numberButton[2]); panel.add(numberButton[3]); panel.add(operationButton[0]); panel.add(清零按钮); panel.add(numberButton[4]); panel.add(numberButton[5]); panel.add(numberButton[6]); panel.add(operationButton[1]); panel.add(退格按钮); panel.add(numberButton[7]); panel.add(numberButton[8]); panel.add(numberButton[9]); panel.add(operationButton[2]); panel.add(求倒数按钮); panel.add(numberButton[0]); panel.add(正负号按钮); panel.add(小数点按钮); panel.add(operationButton[3]); panel.add(等号按钮); add(panel,BorderLayout.CENTER); add(resultShow,BorderLayout.NORTH); setBounds(100,50,300,240); setVisible(true); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); } public void actionPerformed(ActionEvent e){ if(e.getSource() instanceof NumberButton){ NumberButton b=(NumberButton)e.getSource(); if(linklist.size()==0){ int number=b.getNumber(); linklist.add(""+number); resultShow.setText(""+number); 是否按下等号=false; } else if(linklist.size()==1 && 是否按下等号==false){ int number=b.getNumber(); String num=(String)linklist.getFirst(); String s=num.concat(""+number); // E set(int index, E element) 将此列表中指定位置的元素替换为指定的元素。 linklist.set(0,s); resultShow.setText(s); } else if(linklist.size()==1 && 是否按下等号==true){ int number=b.getNumber(); linklist.removeFirst(); linklist.add(""+number); 是否按下等号=false; resultShow.setText(""+number); } else if(linklist.size()==2){ int number=b.getNumber(); linklist.add(""+number); resultShow.setText(""+number); } else if(linklist.size()==3){ int number=b.getNumber(); String num=(String)linklist.getLast(); String s=num.concat(""+number); linklist.set(2,s); resultShow.setText(s); } } else if(e.getSource() instanceof OperationButton){ OperationButton b=(OperationButton)e.getSource(); if(linklist.size()==1){ String mark=b.getOperator(); linklist.add(mark); } else if(linklist.size()==2){ String mark=b.getOperator(); linklist.set(1,mark); } else if(linklist.size()==3){ String mark=b.getOperator(); String num1=(String)linklist.getFirst(); String num2=(String)linklist.getLast(); String 运算符号=(String)linklist.get(1); double n1=Double.parseDouble(num1); double n2=Double.parseDouble(num2); double n=0; if(运算符号.equals("+"))n=n1+n2; else if(运算符号.equals("-"))n=n1-n2; else if(运算符号.equals("*"))n=n1*n2; else if(运算符号.equals("/"))n=n1/n2; linklist.clear(); linklist.add(""+n); linklist.add(mark); resultShow.setText(""+n); } } else if(e.getSource()==等号按钮){ 是否按下等号=true; if(linklist.size()==1 || linklist.size()==2){ String num=(String)linklist.getFirst(); resultShow.setText(""+num); } else if(linklist.size()==3){ String num1=(String)linklist.getFirst(); String num2=(String)linklist.getLast(); String 运算符号=(String)linklist.get(1); double n1=Double.parseDouble(num1); double n2=Double.parseDouble(num2); double n=0; if(运算符号.equals("+"))n=n1+n2; else if(运算符号.equals("-"))n=n1-n2; else if(运算符号.equals("*"))n=n1*n2; else if(运算符号.equals("/"))n=n1/n2; linklist.clear(); linklist.add(""+n); resultShow.setText(""+n); } } else if(e.getSource()==小数点按钮){ // if(linklist.size()==0){ // 是否按下等号=false; // } if(linklist.size()==1){ String dot=小数点按钮.getLabel(); String num=(String) linklist.getFirst(); String s=null; if(num.indexOf(dot)==-1){ s=num.concat(dot); linklist.set(0,s); } else s=num; linklist.set(0,s); resultShow.setText(s); } else if(linklist.size()==3){ String dot=小数点按钮.getLabel(); String num=(String) linklist.getLast(); String s=null; if(num.indexOf(dot)==-1){ s=num.concat(dot); linklist.set(2,s); } else s=num; linklist.set(2,s); resultShow.setText(s); } } else if(e.getSource()==退格按钮){ if(linklist.size()==1){ String num=(String) linklist.getFirst(); if(num.length()>=1){ num=num.substring(0,num.length()-1); linklist.set(0,num); resultShow.setText(num); } else{ linklist.removeLast(); resultShow.setText("0"); } } if(linklist.size()==3){ String num=(String) linklist.getLast(); if(num.length()>=1){ num=num.substring(0,num.length()-1); linklist.set(2,num); resultShow.setText(num); } else{ linklist.removeLast(); resultShow.setText("0"); } } } else if(e.getSource()==正负号按钮){ if(linklist.size()==1){ String num=(String) linklist.getFirst(); double d=Double.parseDouble(num); d=-1*d; String str=String.valueOf(d); linklist.set(0,str); resultShow.setText(str); } else if(linklist.size()==3){ String num=(String) linklist.getLast(); double d=Double.parseDouble(num); d=-1*d; String str=String.valueOf(d); linklist.set(2,str); resultShow.setText(str); } } else if(e.getSource()==求倒数按钮){ if(linklist.size()==1 || linklist.size()==2){ String num=(String) linklist.getFirst(); double d=Double.parseDouble(num); d=1.0/d; String str=String.valueOf(d); linklist.set(0,str); resultShow.setText(str); } else if(linklist.size()==3){ String num=(String) linklist.getLast(); double d=Double.parseDouble(num); d=1.0/d; String str=String.valueOf(d); linklist.set(2,str); resultShow.setText(str); } } else if(e.getSource()==清零按钮){ 是否按下等号=false; resultShow.setText("0"); linklist.clear(); } } public static void main(String[] args) { new Computer(); } } class NumberButton extends Button{ int number; public NumberButton(int number){ super(""+number); this.number=number; setForeground(Color.blue); } public int getNumber(){ return number; } } class OperationButton extends Button{ String operator; public OperationButton(String operator){ super(operator); this.operator=operator; setForeground(Color.red); } public String getOperator(){ return operator; } }
运行结果:
【java图形计算器】 java awt swing组件应用的更多相关文章
- java中经常使用的Swing组件总结
1.按钮(Jbutton) Swing中的按钮是Jbutton,它是javax.swing.AbstracButton类的子类,swing中的按钮可以显示图像,并且可以将按钮设置为窗口的默认图标,而且 ...
- Java GUI编程中AWT/swing/SWT的优缺点
http://www.cnblogs.com/dugang/archive/2010/10/22/1858478.html AWT AWT是Abstract Window Toolkit(抽象窗口工具 ...
- java 图形界面
1.创建一个窗口框架 /** * java 用户界面框架 * 2016/5/10 */ package org.windows; import javax.swing.*; public class ...
- AWT提供了Java Applet 和Java Application中可用的用户图形界面 GUI 中的基本组件
AWT提供了Java Applet 和Java Application中可用的用户图形界面 GUI 中的基本组件( component s). 由于Java是一种独立于平台的 程序设计语言 ,但GUI ...
- JAVA 图形开发中组件对齐方法及界面开发
/*文章中用到的代码只是一部分,需要源码的可通过邮箱联系我 1978702969@qq.com*/ 在上篇博客中提到了JAVA图形界面开发时的两种布局,流式布局和边框布局. 在实际使用中可能会发现,往 ...
- 【转】java图形界面设计(AWT)
[转自]http://blog.sina.com.cn/s/blog_616e189f0100ne1t.html 1. 基本的java Frame操作. Java的图形界面的类主要包括AW ...
- JAVA Swing 组件演示***
下面是Swing组件的演示: package a_swing; import java.awt.BorderLayout; import java.awt.Color; import java.awt ...
- Java可视化计算器
利用java中的AWT和SWING包来做可视化界面. 首先来简单了解一下这两个包: AWT和Swing都是Java中用来做可视化界面的.AWT(Abstract Window Toolkit):抽象窗 ...
- Java图形界面学习---------简易登录界面
/** * @author Administrator * Java图形界面学习---------简易登录界面 * date:2015/10/31 */ import java.awt.BorderL ...
随机推荐
- HTML <base> 标签的 href 属性
为页面上所有相对 URL 规定基准 URL: <head> <base href="http://www.w3school.com.cn/i/" /> &l ...
- 浙大pat 1011题解
With the 2010 FIFA World Cup running, football fans the world over were becoming increasingly excite ...
- hive UDF添加方式
hive UDF添加的方式 1.添加临时函数,只能在此会话中生效,退出hive自动失效 hive> add jar /home/jtdata/hiveUDF/out0.jar; Added [/ ...
- 浅析IO模型
也许很多朋友在学习NIO的时候都会感觉有点吃力,对里面的很多概念都感觉不是那么明朗.在进入Java NIO编程之前,我们今天先来讨论一些比较基础的知识:I/O模型.下面本文先从同步和异步的概念 说起, ...
- Python & virtualenv使用说明
virtualenv是virtual environment的缩写,可以创建独立的Python环境,用起来比较干净: 安装(已安装pip 或者 easy_install): 如果使用pip: pi ...
- From windows live writer
天线数据长度: 4*14*9664*4 = 2164736 信道估计长度: 614400 均衡: 12*1200*4 = 57600
- [ An Ac a Day ^_^ ] CodeForces 680A Bear and Five Cards
这两天回家了 家里电脑太卡 调试不方便 就只能写写水题了…… #include<stdio.h> #include<iostream> #include<algorith ...
- CreateProcess注意的几个地方
1.CreateProcess失败,GetLastError返回998,应该是最后两个参数没有初始化导致的. 2.要使外部程序隐藏窗口运行,需要将STARTUPINFO的dwFlags指定为START ...
- aspose 解决插入html后字体问题
/// <summary> /// 添加html /// </summary> /// <param name="strText"></p ...
- Silverlight程序中访问配置文件
以下代码为本人在一Silverlight程序中访问Web端配置文件的代码: private void GetLoadNeed() { // 项目名称读取配置文件 WebClient wcConfigX ...