Java图形化界面编程实现简单计算器
1.简单计算器
使用AWT
编程,FrameNORTH
区域放置TextField
组件,将指定为4行5列GridLayout布局管理器的Panel放置于Frame
中部区域,其中填充操作符和操作数按钮。
按钮触发事件源,对按钮添加ActionListener
注册监听。自定义NumListener(操作数监听类)、OperatListener
(操作符监听类)、EqualListener
(’=‘符监听类)和匿名内部类(如b[11]’-'符监听类)分情况对按钮事件进行监听并响应。
注意:整数、浮点、负数以及连续运算均可以。
代码:
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 Button[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(); } }
到此这篇关于 Java
图形化界面编程实现简单计算器的文章就介绍到这了,更多相关 Java图形化界面编程实现计算器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
springboot+mybatis快速插入大量数据的具体实现
最近导入表格数据时需要同时插入修改大量数据,下面这篇文章主要给大家介绍了关于springboot+mybatis快速插入大量数据的具体实现,文中通过实例代码介绍的非常详细,需要的朋友可以参考下2023-04-04Java中@DateTimeFormat注解与@JsonFormat注解的使用方式
这篇文章主要介绍了Java中@DateTimeFormat注解与@JsonFormat注解的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-08-08
最新评论