java项目实战-计算器(页面布局学习 添加事件)

来源:互联网 发布:剑网三有挂机软件么 编辑:程序博客网 时间:2024/06/06 09:08
package com.ten.jiauanqi;import java.awt.*;import java.awt.event.*;public class Calculator extends WindowAdapter{//定义3个面板Panel p1=new Panel();Panel p2=new Panel();Panel p3=new Panel();TextField txt;//创建文本框对象private Button[] b=new Button[17];//创建按钮数组private String ss[]={"7","8","9","+","4","5","6","-","1","2","3","*","清空","0","=","/","关闭"};static double a;//创建double类型变量static String s,str;//创建String类型变量public static void main(String args[]){(new Calculator()).frame();}public void frame(){Frame fm=new Frame("计算器");for(int i=0;i<=16;i++){b[i] = new Button(ss[i]);//为按钮数组赋值}for(int i=0;i<=15;i++){p2.add(b[i]);}b[16].setBackground(Color.yellow);//设置按钮背景色为黄色//创建和设置文本框txt= new TextField(15);txt.setEditable(false);for(int i=0;i<=16;i++){b[i].addActionListener(new buttonlistener());//为按钮添加监听器}b[16].addActionListener(new close());//为按钮添加关闭监听器fm.addWindowListener(this);fm.setBackground(Color.red);p1.setLayout(new BorderLayout());p1.add(txt,"North");p2.setLayout(new GridLayout(4,4));p3.setLayout(new BorderLayout());p3.add(b[16]);//添加各个面板到窗口上fm.add(p1,"North");fm.add(p2,"Center");fm.add(p3,"South");fm.pack();fm.setVisible(true);}public void windowClosing(WindowEvent e){System.exit(0);}//编写事件监听器class buttonlistener implements ActionListener{public void actionPerformed(ActionEvent e){Button btn=(Button)e.getSource();//获取事件按钮if(btn.getLabel()=="="){jisuan();str=String.valueOf(a);txt.setText(str);s="";}else if(btn.getLabel()=="+"){jisuan();txt.setText("");s="+";}else if(btn.getLabel()=="-"){jisuan();txt.setText("");s="-";}else if(btn.getLabel()=="*"){jisuan();txt.setText("");s="*";}else if(btn.getLabel()=="/"){jisuan();txt.setText("");s="/";}else{txt.setText(txt.getText()+btn.getLabel());if(btn.getLabel()=="清空")txt.setText("");}}public void jisuan(){if(s=="+"){a+=Double.parseDouble(txt.getText());}else if(s=="-"){a-=Double.parseDouble(txt.getText());}else if(s=="*"){a*=Double.parseDouble(txt.getText());}else if(s=="/"){a/=Double.parseDouble(txt.getText());}else{a=Double.parseDouble(txt.getText());}}}class close implements ActionListener{public void actionPerformed(ActionEvent e){System.exit(0);}}}

效果图:


0 0
原创粉丝点击