Java图形化界面编程实现简单计算器

网友投稿 321 2022-09-05


Java图形化界面编程实现简单计算器

1.简单计算器

使用AWT编程,FrameNORTH区域放置TextField组件,将指定为4行5列GridLayout布局管理器的Panel放置于Frame中部区域,其中填充操作符和操作数按钮。 按钮触发事件源,对按钮添加ActionListener注册监听。自定义NumListener(操作数监听类)、OperatListener(操作符监听类)、EqualListener(’=‘符监听类)和匿名内部类(如b[11]’-'符监听类)分情况对按钮事件进行监听并响应。注意:整数、浮点、负数以及连续运算均可以。

界面效果:

简单计算一下 -12 + 3 = -9

代码:

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import static java.awt.Color.blue;

public class Calculation {

//操作数

double x,y;

String op;

boolean flag;

Frame frame = new Frame("智子的计算器!");

TextField tf = new TextField(30);

Button[] b = new ButtonlwIFiD[20];

public void init(){

//北部区域放置文本框

frame.add(tf,BorderLayout.NORTH);

Panel panel = new Panel();

panel.setLayout(new GridLayout(4,5,2,2));

//设置按钮

String s = "+-*/%";

for(int i=0;i<10;i++) {//运算数

b[i] = new Button(i + "");

b[i].setForeground(blue);

}

for(int i=0;i<5;i++) {//运算符

b[i+10]=new Button(s.charAt(i)+"");

b[i+10].setForeground(blue);

}

String[] t = {"sqrt","^2","^3","=","."};

for(int i=0;i<5;i++){

b[i+15]=new Button(t[i]);

b[i+15].setForeground(blue);

}

//按钮注册监听

for (int i = 0; i < 10; i++) {//操作数注册监听

b[i].addActionListener(new NumListener());

}

for (int i = 10; i < 18; i++) {//操作符注册监听

if(i==11) continue;

b[i].addActionListener(new OperatListener());

}

b[11].addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

if(!flag){

tf.setText("-");

flag = true;

} else {

x = Double.parseDouble(tf.getText());

op = e.getActionCommand();

flag = false;

}

}

});

//“=”注册监听

b[18].addActionListener(new EqualListener());

//“.”注册监听

b[19].addActionListener(new NumListener());

//将按钮加入panel

for (int i = 0; i < 20; i++) {

panel.add(b[i]);

}

//设置中部按钮

frame.add(panel);

//窗口监听器 注册监听

frame.addWindowListener(new WindowAdapter() {

@Override

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

//设置窗口最优并可见

frame.pack();

frame.setVisible(true);

}

//数字按钮监听器类

public class NumListener implements ActionListener{

@Override

public void actionPerformed(ActionEvent e) {

String t = e.getActionCommand();

String s = tf.getText();

if(flag==false)

tf.setText(t);

else

tf.setText(s+t);

flag = true;

}

}

//操作符按钮监听器类

public class OperatListener implements ActionListener{

@Override

public void actionPerformed(ActionEvent e) {

x = Double.parseDouble(tf.getText());

op = e.getActionCommand();

flag = false;

}

}

//等号按钮监听器类

public class EqualListener implements ActionListener{

@Override

public void actionPerformed(ActionEvent e) {

y = Double.parseDouble(tf.getText());

flag = true;

switch(op){

case "+":tf.setText(x+y+"");

break;

case "-":tf.setText(x-y+"");

break;

case "*":tf.setText(x*y+"");

break;

case "/":

if(y!=0)

tf.setText(x/y+"");

else

tf.setText("inf");

break;

case "%":tf.setText(x%y+"");

break;

case "sqrt":tf.setText((int)Math.sqrt(x)+"");

break;

case "^2":tf.setText(y*y+"");

break;

case "^3":tf.setText(y*y*y+"");

break;

}

}

}

public static void main(String[] args) {

new Calculation().init();

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:some python trap and hints(somebody that I used to know)
下一篇:【手写字母识别】基于ELMAN结合BP神经网络实现手写大写字母(A-O)识别含Matlab源码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~