zoukankan      html  css  js  c++  java
  • 实验十一:图形界面二

    实验代码:

    import java.awt.BorderLayout;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.StringTokenizer;

    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JTextField;

    public class JiSuan extends JFrame{
    JPanel panel;
    JTextField text;
    JButton jb0,jb1,jb2,jb3,jb4,jb5,jb6,jb7,jb8,jb9; //0~9四个数字(可写成数组)
    JButton bot,add,sub,mul,div,equ; //加减乘除以及小数点五个符号
    public JiSuan(){
    this.setBounds(300, 200, 400, 300); //窗体大小
    this.setTitle("计算器"); //窗体名称
    this.setLayout(new BorderLayout()); //设置计算机窗体的布局方式

    text = new JTextField(15); //计算区域

    //新建数字按钮
    jb0 = new JButton("0");
    jb1 = new JButton("1");
    jb2 = new JButton("2");
    jb3 = new JButton("3");
    jb4 = new JButton("4");
    jb5 = new JButton("5");
    jb6 = new JButton("6");
    jb7 = new JButton("7");
    jb8 = new JButton("8");
    jb9 = new JButton("9");

    //新建符号按钮
    bot = new JButton(".");
    add = new JButton("+");
    sub = new JButton("-");
    mul = new JButton("*");
    div = new JButton("/");
    equ = new JButton("=");

    //新建计算器数字及符号所在区域面板
    panel = new JPanel();
    panel.setLayout(new GridLayout(4,4)); //设置面板的布局方式

    //将各按钮组件放入面板(panel)中
    //第一行
    panel.add(jb7);
    panel.add(jb8);
    panel.add(jb9);
    panel.add(div);
    //第二行
    panel.add(jb4);
    panel.add(jb5);
    panel.add(jb6);
    panel.add(mul);
    //第三行
    panel.add(jb1);
    panel.add(jb2);
    panel.add(jb3);
    panel.add(sub);
    //第四行
    panel.add(bot);
    panel.add(jb0);
    panel.add(equ);
    panel.add(add);


    this.add(text,BorderLayout.NORTH);
    this.add(panel);

    MyEvent(); //事件处理

    this.setVisible(true); //设置窗体显示
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗体可关闭
    }

    public void MyEvent(){
    /*将以下内容封装到Text方法中
    * jb0.addActionListener(new ActionListener(){
    @Override
    public void actionPerformed(ActionEvent arg0) {
    // TODO Auto-generated method stub
    // text.setText("0");
    String str = jb0.getText();
    System.out.println(str);
    }

    };*/
    //为各按钮添加事件处理
    Text(jb0);
    Text(jb1);
    Text(jb2);
    Text(jb3);
    Text(jb4);
    Text(jb5);
    Text(jb6);
    Text(jb7);
    Text(jb8);
    Text(jb9);
    Text(bot);
    Text(add);
    Text(sub);
    Text(mul);
    Text(div);

    //“=”按钮的事件处理
    equ.addActionListener(new ActionListener(){

    @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub

    text.setText(text.getText()+equ.getText());

    if(text.getText().contains("+")){//做加法运算
    // String[] str1 = text.getText().split("+"); //错误语句
    StringTokenizer st1 = new StringTokenizer(text.getText(),"+");
    // System.out.println("str1======"+st1.nextToken());
    double d1,d2 = 0;
    d1 = Double.parseDouble(st1.nextToken());
    while(st1.hasMoreTokens()){
    StringTokenizer st2 = new StringTokenizer(st1.nextToken(),"=");
    // System.out.println("str2======"+st2.nextToken());
    d2 = Double.parseDouble(st2.nextToken());
    }

    text.setText(text.getText()+" "+(d1+d2));
    }else if(text.getText().contains("-")){//做减法运算
    StringTokenizer st1 = new StringTokenizer(text.getText(),"-");
    double d1,d2 = 0;
    d1 = Double.parseDouble(st1.nextToken());
    while(st1.hasMoreTokens()){
    StringTokenizer st2 = new StringTokenizer(st1.nextToken(),"=");
    d2 = Double.parseDouble(st2.nextToken());
    }

    text.setText(text.getText()+" "+(d1-d2));
    }else if(text.getText().contains("*")){//做乘法运算
    StringTokenizer st1 = new StringTokenizer(text.getText(),"*");
    double d1,d2 = 0;
    d1 = Double.parseDouble(st1.nextToken());
    while(st1.hasMoreTokens()){
    StringTokenizer st2 = new StringTokenizer(st1.nextToken(),"=");
    d2 = Double.parseDouble(st2.nextToken());
    }

    text.setText(text.getText()+" "+(d1*d2));
    }else if(text.getText().contains("/")){//做除法运算
    StringTokenizer st1 = new StringTokenizer(text.getText(),"/");
    double d1,d2 = 0;
    d1 = Double.parseDouble(st1.nextToken());
    while(st1.hasMoreTokens()){
    StringTokenizer st2 = new StringTokenizer(st1.nextToken(),"=");
    d2 = Double.parseDouble(st2.nextToken());
    }

    text.setText(text.getText()+" "+(d1/d2)); //将运算结果放到text区域
    }
    }

    });
    }

    //各按钮的事件处理方法
    public void Text(JButton button){
    button.addActionListener(new ActionListener(){

    @Override
    public void actionPerformed(ActionEvent arg0) {
    // TODO Auto-generated method stub
    // text.setText("0");
    String str = button.getText();
    // System.out.println(str);
    text.setText(text.getText()+str);
    }

    });
    // return button.getText();
    }

    //主函数
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    new JiSuan();
    }

    }

    实验结果:

    实验心得:

    虽然实验还不是很完整,但基本能进行运算。

  • 相关阅读:
    CF1276F
    CF1082F
    CF1366G
    CF1221G
    CentOS7统计某个进程当前的线程数
    centos7备份系统日志
    mysql删除带外键约束的表的方法
    django.db.models.query.QuerySet格式的数据输出
    Linux命令大全
    django创建多对多表三种方法,和ORM操作增删改查
  • 原文地址:https://www.cnblogs.com/Java199-wfx/p/11000103.html
Copyright © 2011-2022 走看看