已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
package com.tarena.main;import java.awt.Color;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.AbstractAction;import javax.swing.AbstractButton;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.border.BevelBorder;public class Calculator extends JFrame implements ActionListener/-菜单栏定义开始-/public JMenuBar menuBar=new JMenuBar();public JMenu editMenu=new JMenu(编辑(E);public JMenuItem menuItemCopy=new JMenuItem(复制(C);public JMenuItem menuItemPause=new JMenuItem(粘贴(P);public JMenu viewMenu=new JMenu(查看(V);public JMenuItem menuItemStand=new JMenuItem(标准型(T);public JMenuItem menuItemScience=new JMenuItem(科学型(S);public JMenuItem menuItemGroup=new JMenuItem(数学分组(I);public JMenu helpMenu=new JMenu(帮助(H);public JMenuItem menuItemHelp=new JMenuItem(帮组主题(H);public JMenuItem menuItemAbout=new JMenuItem(关于计算器(A);/-菜单栏定义结束-/文本输入框public JTextField msg=new JTextField(0); /标签public JLabel labelInfo=new JLabel();/定义一个panel放MC-M+按钮public JPanel panSave=new JPanel();/定义一个panel放Baskspace CE C 按钮public JPanel panBack=new JPanel();/定义一个panel放0-9 + - */等剩余按钮public JPanel panNum=new JPanel();/创建一个放27个MyButton类型的数组public MyButton buttons=new MyButton27;/fam的作用是缓存public StringBuffer fam=new StringBuffer();public double value=0; public int operator=0;public boolean hasSave=false;public double numSave=0;/-组装菜单栏-public void initMenu()this.setJMenuBar(menuBar);menuBar.add(editMenu);editMenu.add(menuItemCopy);editMenu.add(menuItemPause);menuBar.add(viewMenu);viewMenu.add(menuItemStand);viewMenu.add(menuItemScience);viewMenu.addSeparator();/添加分割线viewMenu.add(menuItemGroup);menuBar.add(helpMenu);helpMenu.add(menuItemHelp);helpMenu.addSeparator();/添加分割线helpMenu.add(menuItemAbout);menuItemAbout.addActionListener(this);/-此将计算器上的所有button创建出来-public void initButton()/将监听绑定到button上Buttonlistener listener=new Buttonlistener();buttons0=new MyButton(listener,7,Color.BLUE);buttons1=new MyButton(listener,8,Color.BLUE);buttons2=new MyButton(listener,9,Color.BLUE);buttons3=new MyButton(listener,/,Color.RED);buttons4=new MyButton(listener,sqrt,Color.BLUE);buttons5=new MyButton(listener,4,Color.BLUE);buttons6=new MyButton(listener,5,Color.BLUE);buttons7=new MyButton(listener,6,Color.BLUE);buttons8=new MyButton(listener,*,Color.RED);buttons9=new MyButton(listener,%,Color.BLUE);buttons10=new MyButton(listener,1,Color.BLUE);buttons11=new MyButton(listener,2,Color.BLUE);buttons12=new MyButton(listener,3,Color.BLUE);buttons13=new MyButton(listener,-,Color.RED);buttons14=new MyButton(listener,1/x,Color.BLUE);buttons15=new MyButton(listener,0,Color.BLUE);buttons16=new MyButton(listener,+/-,Color.BLUE);buttons17=new MyButton(listener,.,Color.BLUE);buttons18=new MyButton(listener,+,Color.RED);buttons19=new MyButton(listener,=,Color.RED);buttons20=new MyButton(listener,MC,Color.RED);buttons21=new MyButton(listener,MR,Color.RED);buttons22=new MyButton(listener,MS,Color.RED);buttons23=new MyButton(listener,M+,Color.RED);buttons24=new MyButton(listener,Bascspace,62,25,Color.RED);buttons25=new MyButton(listener,CE,62,25,Color.RED);buttons26=new MyButton(listener,C,62,25,Color.RED);/-此方法组装剩余控件(文本输入框、Label和button)-public void initAdd()/msg-文本输入框的组装msg.setSize(240,20);msg.setLocation(7, 4);msg.setBackground(Color.WHITE);/背景颜色白色msg.setEditable(false);/文本输入框不能编辑/将文本输入框的内容居右显示msg.setHorizontalAlignment(JTextField.RIGHT);/labelInfo-标签的组装labelInfo.setSize(30,26);labelInfo.setLocation(7,30);/能将标签凹陷labelInfo.setBorder(new BevelBorder(BevelBorder.LOWERED);/panSave-面板的组装panSave.setSize(35,150);panSave.setLocation(7,60);/设置button和button之间的水平间距和垂直间距panSave.setLayout(new FlowLayout(FlowLayout.CENTER,3,3);/将MC MR MS M+放入panSave面板上 for(int i=20;i24;i+) panSave.add(buttonsi); /panClear-面板的组装 panBack.setLocation(45,30); panBack.setSize(200,26); panBack.setLayout(new FlowLayout(FlowLayout.CENTER,3,0); for(int i=24;i27;i+) panBack.add(buttonsi); /panBtn-面板的组装 panNum.setSize(200,150); panNum.setLocation(45,60); panNum.setLayout(new FlowLayout(FlowLayout.CENTER,4,3); for(int i=0;i20;i+)panNum.add(buttonsi); this.setLayout(null);/将JFrame窗体的布局清空this.add(msg);/将文本输入框放入窗体里this.add(labelInfo);/将标签放入窗体里this.add(panSave);this.add(panBack);this.add(panNum);public Calculator()initMenu();initButton();initAdd();this.setResizable(false);this.setLocation(200,200);this.setSize(260,240);this.setVisible(true);this.setTitle(计算器);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/-此内部类是专门对计算按钮做监听的-/extends AbstractActionpublic class Buttonlistener extends AbstractActionOverridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubint i;for(i=0;i1)fam.deleteCharAt(fam.length()-1);msg.setText(fam.toString();break;/1/xcase 14:if(value2 !=0)showResult(1/value2)+);fam=new StringBuffer(); break; /sqrtcase 4: showResult(Math.sqrt(value2)+); fam=new StringBuffer(); break;/%case 9:showResult(0.01*value2)+);fam=new StringBuffer();break;/MCcase 20:if(hasSave=true)labelInfo.setText();numSave=0;hasSave=false;break;/MRcase 21:showResult(numSave+);break;/Mscase 22:if(value2!=0)numSave=value2;labelInfo.setText(M);hasSave=true;break;/M+case 23:if(value2!=0)numSave=numSave+value2;labelInfo.setText(M);hasSave=true;break;/.case 17:break;case 16:showResult(-value2)+);fam=new StringBuffer();break;/-内部分类结束-/清空计算机所有变量值,变回原始状态public void clearAll(String result)showResult(result);value=0;operator=0;fam=new StringBuffer();/在JTexefield中显示结果的方法,能将后,后面的。0去掉public void showResult(String result)msg.setText(result.endsWith(.0)?result.substring(0,result.length()-2):result);public static void main(String args) new Calculator();Overridepublic void actionPerformed(ActionEvent e) if(关于计算器(A).equals(e.getActionCommand()AboutDialog about=new AboutDialog(this,true);about.setVisible(true);/此类关于计算器的小窗口public class AboutDialog extends JDialogpublic JLabel label=new JLabel(版权所有(C) 2012 );public JButton button=new JButton(确定);public AboutDialog(JFrame frame,boolean b)super(frame,b);this.setLayout(new FlowLayout();this.add(label);this.add(button);this.pack();/窗体内容自适应this.setTitle(关于计算器);/匿名内部类的形式写button.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent e) dispose();/销毁该窗体);/将此部分重新建一个class存放以让前面的程序调用package com.tarena.main;import java.awt.Color;import java.awt.Dimension;import java.awt.Font;import java.awt.Insets;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.border.BevelBorder;public class MyButton extends J
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工厂人文关怀案例分享课件
- 中药醇沉水沉生产线可行性研究报告
- 工程欠缺施工制作课件
- 工厂培训制作方案课件
- 古城音乐课件
- 护理专业护理伦理学专项练习题及答案
- 兽医食品安全与质量控制备考习题及答案
- 国际贸易单证实务操作专项训练题库及答案
- 执业药师考试药事管理与法规模拟试卷及答案
- 船舶安全技术操作规范专项训练题库及答案
- 70周岁及以上驾驶人能力测试题库(含详细答案)
- 建筑工地节能减排措施方案
- 【新教材】青岛版(2024)三年级上册数学 六 美丽乡村-轴对称、平移和旋转现象 教案
- 2024版抗结核药所致药物性肝损伤诊治指南课件
- 2026年华侨、港澳、台联考高考数学试卷(含解析)
- 2026年及未来5年市场数据中国游戏陪玩行业市场发展数据监测及投资前景展望报告
- 2025-2026学年广东深圳宝安区七年级(上)期中考数学试题(含答案)
- 1104报表基础报表、特色报表填报说明v1
- 高压开关柜倒闸操作课件
- 【数学】浙江省杭州市2026届高三上学期教学质量检测试题(解析版)
- 2025年专升本医学检验技术考试真题专项训练试卷及答案
评论
0/150
提交评论