计算机软件实习——项目一

        项目一需要我们做出一个基础的计算器,要包含加减乘除、验算式子等功能,均由Java编写。

        首先考虑UI制作,Java自带的Java GUI即Java的图形用户界面,包含了AWT,Swing,javaFX,SWT等界面库。这次预习侧重于学习AWT以及Swing。

        1.AWT(Abstract Window Toolkit)

        抽象窗口工具包AWT是java提供的建立图形用户界面GUI的开发包,AWT可用于Java的Applet 和 Application 中。java.awt包提供了基本的GUI设计工具,主要包括组件、容器和布局管理器三个概念。
        制作简易计算器的UI可以先用Window类的子类如frame类创建一个主界面,在其中用panel类进行布局,而scrollpane类可用于浏览计算历史。

        

import java.awt.Color;
import java.awt.Frame;
 
public class FirstFrame extends Frame{
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		FirstFrame fr = new FirstFrame("Hello"); //构造方法
		fr.setSize(480,640);  //设置Frame的大小
		fr.setBackground(Color.white); //设置Frame的背景色
		fr.setVisible(true); //设置Frame为可见,默认不可见
	}
	
	public FirstFrame(String str){
		super(str);
	}
 
}

这就可以创建一个简单的主界面。
 

按钮设计


     
        b_0 = new Button("0");
        b_0.addActionListener(this);
        b_1 = new Button("1");
        b_1.addActionListener(this);
        b_2 = new Button("2");
        b_2.addActionListener(this);
        b_3 = new Button("3");
        b_3.addActionListener(this);
        b_4 = new Button("4");
        b_4.addActionListener(this);
        b_5 = new Button("5");
        b_5.addActionListener(this);
        b_6 = new Button("6");
        b_6.addActionListener(this);
        b_7 = new Button("7");
        b_7.addActionListener(this);
        b_8 = new Button("8");
        b_8.addActionListener(this);
        b_9 = new Button("9");
        b_9.addActionListener(this);
        b_plus = new Button("+");
        b_plus.addActionListener(this);
        b_minus = new Button("_");
        b_minus.addActionListener(this);
        b_multiply = new Button("*");
        b_multiply.addActionListener(this);
        b_divide = new Button("/");
        b_divide.addActionListener(this);
        b_decimalpoint = new Button(".");
        b_decimalpoint.addActionListener(this);
        b_leftbracket = new Button("(");
        b_leftbracket.addActionListener(this);
        b_rightbracket = new Button(")");
        b_rightbracket.addActionListener(this);
        b_empty = new Button("empty");
        b_empty.addActionListener(this);
        b_equal = new Button("=");
        b_equal.addActionListener(this);
        b_backspace = new Button("backspace");
        b_backspace.addActionListener(this);

panel界面设计

        input = new TextField();
        input.addActionListener(this);
        input.setBounds(20, 140, 170, 40);
        input.setFont(new Font("宋体", Font.BOLD, 30));

        output = new TextField(1000);
        output.addActionListener(this);
        output.setBounds(20, 40, 550 - 50, 80);
        output.setFont(new Font("宋体", Font.BOLD, 35));

        upper = new JPanel(null);
        below = new JPanel(new GridLayout(5, 4));

        upper.setBounds(0, 0, 550, 200);
        upper.setBackground(new Color(250, 250, 250));

        upper.add(input);
        upper.add(output);

        below.setBounds(0, 200, 550, 400);
        below.setBackground(Color.black);

        below.add(b_leftbracket);
        below.add(b_rightbracket);
        below.add(b_empty);
        b_empty.setFont(new Font("宋体", Font.BOLD, 15));
        b_backspace.setFont(new Font("宋体", Font.BOLD, 15));
        below.add(b_backspace);
        below.add(b_7);
        below.add(b_8);
        below.add(b_9);
        below.add(b_divide);
        below.add(b_4);
        below.add(b_5);
        below.add(b_6);
        below.add(b_multiply);
        below.add(b_1);
        below.add(b_2);
        below.add(b_3);
        below.add(b_minus);
        below.add(b_decimalpoint);
        below.add(b_0);
        below.add(b_equal);
        below.add(b_plus);

监听事件

public void actionPerformed(ActionEvent e) {
        if (e.getSource().equals(b_0)) {
            s = input.getText();
            if (s.length() <= 8) {
                if (!s.equals("0") && EqualNumber != 1) {
                    input.setText(s + "0");

                }
            }
        }

        if (e.getSource().equals(b_1)) {
            s = input.getText();
            if (s.length() <= 8 && EqualNumber != 1) {
                if (s.equals("0") || s.equals("")) {
                    input.setText("1");
                } else {
                    input.setText(s + "1");
                }
            }
        }

        if (e.getSource().equals(b_2)) {
            s = input.getText();
            if (s.length() <= 8 && EqualNumber != 1) {
                if (s.equals("0") || s.equals("")) {
                    input.setText("2");
                } else {
                    input.setText(s + "2");
                }
            }
        }

        if (e.getSource().equals(b_3)) {
            s = input.getText();
            if (s.length() <= 8 && EqualNumber != 1) {
                if (s.equals("0") || s.equals("")) {
                    input.setText("3");
                } else {
                    input.setText(s + "3");
                }
            }
        }

        if (e.getSource().equals(b_4)) {
            s = input.getText();
            if (s.length() <= 8 && EqualNumber != 1) {
                if (s.equals("0") || s.equals("")) {
                    input.setText("4");
                } else {
                    input.setText(s + "4");
                }
            }
        }

        if (e.getSource().equals(b_5)) {
            s = input.getText();
            if (s.length() <= 8 && EqualNumber != 1) {
                if (s.equals("0") || s.equals("")) {
                    input.setText("5");
                } else {
                    input.setText(s + "5");
                }
            }
        }

        if (e.getSource().equals(b_6)) {
            s = input.getText();
            if (s.length() <= 8 && EqualNumber != 1) {
                if (s.equals("0") || s.equals("")) {
                    input.setText("6");
                } else {
                    input.setText(s + "6");
                }
            }
        }

        if (e.getSource().equals(b_7)) {
            s = input.getText();
            if (s.length() <= 8 && EqualNumber != 1) {
                if (s.equals("0") || s.equals("")) {
                    input.setText("7");
                } else {
                    input.setText(s + "7");
                }
            }
        }

        if (e.getSource().equals(b_8)) {
            s = input.getText();
            if (s.length() <= 8 && EqualNumber != 1) {
                if (s.equals("0") || s.equals("")) {
                    input.setText("8");
                } else {
                    input.setText(s + "8");
                }
            }
        }

        if (e.getSource().equals(b_9)) {
            s = input.getText();
            if (s.length() <= 8 && EqualNumber != 1) {
                if (s.equals("0") || s.equals("")) {
                    input.setText("9");
                } else {
                    input.setText(s + "9");
                }
            }
        }

        if (e.getSource().equals(b_decimalpoint)) {
            s = input.getText();
            if (PointNumber == 0) {
                input.setText(s + ".");
                PointNumber = 1;
            }
        }

        if (e.getSource().equals(b_plus)) {
            s = input.getText();
            char[] ch1 = s.toCharArray();
            int length1 = s.length() - 1;
            String S = output.getText();
            char[] ch2 = S.toCharArray();
            int length2 = S.length() - 1;
            //当数字为空或为0或数字的最后一位是小数点时不作处理
            if ((length2 != -1 && ch2[length2] == ')') || (!s.equals("0") && !s.equals("") && ch1[length1] != '.')) {
                input.setText("");
                output.setText(output.getText() + s + "+");

            }
        }

        if (e.getSource().equals(b_minus)) {
            s = input.getText();
            char[] ch1 = s.toCharArray();
            int length1 = s.length() - 1;
            String S = output.getText();
            char[] ch2 = S.toCharArray();
            int length2 = S.length() - 1;
            if ((length2 != -1 && ch2[length2] == ')') || (!s.equals("0") && !s.equals("") && ch1[length1] != '.')) {
                input.setText("");
                output.setText(output.getText() + s + "-");
            }
        }

        if (e.getSource().equals(b_multiply)) {
            s = input.getText();
            char[] ch1 = s.toCharArray();
            int length1 = s.length() - 1;
            String S = output.getText();
            char[] ch2 = S.toCharArray();
            int length2 = S.length() - 1;
            if ((length2 != -1 && ch2[length2] == ')') || (!s.equals("0") && !s.equals("") && ch1[length1] != '.')) {
                input.setText("");
                output.setText(output.getText() + s + "*");
            }
        }

        if (e.getSource().equals(b_divide)) {
            s = input.getText();
            char[] ch1 = s.toCharArray();
            int length1 = s.length() - 1;
            String S = output.getText();
            char[] ch2 = S.toCharArray();
            int length2 = S.length() - 1;
            if ((length2 != -1 && ch2[length2] == ')') || (!s.equals("0") && !s.equals("") && ch1[length1] != '.')) {
                input.setText("");
                output.setText(output.getText() + s + "÷");
            }
        }

        if (e.getSource().equals(b_leftbracket)) {
            if (!input.getText().equals("0") && !input.getText().contentEquals("")) {
                output.setText(output.getText() + input.getText());
            }
            s = output.getText();
            char[] ch = s.toCharArray();
            int length = s.length() - 1;
            if (length == -1 || ch[length] == '+' || ch[length] == '-' || ch[length] == '*' || ch[length] == '÷' || ch[length] == '(') {
                output.setText(output.getText() + '(');
                LNum++;
            }
        }

        if (e.getSource().equals(b_rightbracket)) {
            if (!input.getText().equals("0")) {
                output.setText(output.getText() + input.getText());
                input.setText("");
            }
            s = output.getText();
            char[] ch = s.toCharArray();
            int length = s.length() - 1;

            if (Character.isDigit(ch[length]) && LNum > RNum) {
                RNum++;
                output.setText(output.getText() + ')');
            }

        }


        if (e.getSource().equals(b_empty)) {
            input.setText("0");
            output.setText("");
            LNum = 0;
            RNum = 0;
            PointNumber = 0;
            EqualNumber = 0;
        }


        if (e.getSource().equals(b_backspace)) {
            int i = input.getText().length();
            int j = output.getText().length();
            output.setText(output.getText().substring(0, j - 1));
            input.setText(input.getText().substring(0, i - 1));
        }



    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值