JaVA AWT 一个很好的计算器

来源:互联网 发布:java A 编辑:程序博客网 时间:2024/06/06 00:47

转载请注明出处。


package com.test;import java.awt.Button;import java.awt.Frame;import java.awt.GridLayout;import java.awt.Panel;import java.awt.TextField;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.script.ScriptEngine;import javax.script.ScriptEngineManager;import javax.script.ScriptException;import javax.swing.JOptionPane;/** *  * @author GaoTengTeng * QQ:     908875137 * Call:   15735104600 *  * */public class Calculate {private static String showText = "";private Frame frame = new Frame("计算器|");private Panel mainPanel = new Panel(new GridLayout(5, 1));private Panel panelShow = new Panel(new GridLayout(1, 1));private Panel[] panelButtons = new Panel[4];private TextField showTextField = new TextField(showText);private char[][] btText = { { '7', '8', '9', '+' }, { '4', '5', '6', '-' },{ '1', '2', '3', '*' }, { '0', '.', '=', '/' }, };private Button[][] buttons = new Button[4][4];public Calculate() {initView();}public void initView() {showTextField.setEditable(false);panelShow.add(showTextField);mainPanel.add(panelShow);for (int i = 0; i < 4; i++) {panelButtons[i] = new Panel(new GridLayout(1, 4));for (int j = 0; j < 4; j++) {buttons[i][j] = new Button(String.valueOf(btText[i][j]));panelButtons[i].add(buttons[i][j]);if (btText[i][j] != '=') {buttons[i][j].addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {showText = showText + e.getActionCommand();showTextField.setText(showText);}});} else {buttons[i][j].addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {ScriptEngineManager mgr = new ScriptEngineManager();ScriptEngine engine = mgr.getEngineByName("JavaScript");Object o = null;try {o = engine.eval(showText);} catch (ScriptException e1) {JOptionPane.showMessageDialog(new Panel(),"输入有误,请重新输入", "警告",JOptionPane.WARNING_MESSAGE);}double d = Double.parseDouble(o.toString());showTextField.setText("" + d);showText = "";}});}}mainPanel.add(panelButtons[i]);}frame.add(mainPanel);frame.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});frame.setSize(300, 300);frame.setVisible(true);}public static void main(String[] args) {Calculate calculate = new Calculate();}}