java实现计算器
2016-03-14 14:51
387 查看
package jg_4; import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; /** * @author ZhangLong * 网格布局 */ @SuppressWarnings("serial") public class Calculator extends JFrame { //声明一个文本栏控件,用于显示计算结果 private JTextField txtResult; private JPanel p; //定义一个字符串数组,将计算器中按钮的文字都放在该数组中 private String name[] = {"7", "8", "9", "+", "4", "5", "6", "-", "1", "2", "3", "*", "0", ".", "=", "/"}; //声明一个按钮数组,该数组的长度以字符串的长度为准 private JButton button[] = new JButton[name.length]; //定义一个存放计算结果的变量,初始为0 private double result = 0; //存放最后一个操作符 private String lastCommand = "="; //标识是否开始 private boolean start = true; public Calculator() { //构造方法 super("计算器"); txtResult = new JTextField(20); //实例化文本栏控件 txtResult.setFocusable(false); //------设置文本框不是焦点状态------------------------------------------------------ this.add(txtResult, BorderLayout.NORTH); //将文本栏控件放置在窗体框架的上方 p = new JPanel(new GridLayout(4,4)); //实例化面板对象,同时设置此面板布局为4行4列的网格布局 //创建监听对象 ButtonListener bl = new ButtonListener(); KeyListener kl = new KeyListener(); for (int i=0; i<button.length; i++) { //循环实例化按钮对象数组 button[i] = new JButton(name[i]); p.add(button[i]); //注册监听到每一个按钮 button[i].addActionListener(bl); button[i].addKeyListener(kl); } this.add(p, BorderLayout.CENTER); this.setSize(200, 150); this.setLocation(500, 200); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } /* * 计算 */ public void calculate(double x) { if (lastCommand.equals("+")) result += x; else if (lastCommand.equals("-")) result -= x; else if (lastCommand.equals("/")) result /= x; else if (lastCommand.equals("*")) result *= x; else if (lastCommand.equals("=")) result = x; //将结果显示到文本框中 txtResult.setText("" + result); } /* * 主方法主方法 */ public static void main(String[] args) { new Calculator(); } /* * 按钮监听类 */ private class ButtonListener implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { String input = e.getActionCommand(); //返回点击的按钮 System.out.println(input); //单击操作符号按钮 if (input.equals("+") || input.equals("-") || input.equals("*") || input.equals("/") || input.equals("=")) { if (start) { //start 代表应该输入一个数(包括负号-) if (input.equals("-")) { txtResult.setText(input); start = false; } else lastCommand = input; } else { calculate(Double.parseDouble(txtResult.getText())); lastCommand = input; start = true; } } else { if (start) { txtResult.setText(""); start = false; } txtResult.setText(txtResult.getText() + input); } } } /* * 键盘按键监听类 */ private class KeyListener extends KeyAdapter { } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- Android布局的小窍门?
- Web布局连载——两栏固定布局(五)
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序