一则运算Java运算器相关代码

一则运算Java运算器:

构造者:

 
 
 
  1. import javax.swing.*;  
  2. import java.awt.*;  
  3. import java.awt.event.*;  
  4.  
  5. public class Calculator3 extends JFrame implements ActionListener {  
  6. private boolean dotExist, operated, equaled; // 帮助运算的布尔变量  
  7. private double storedNumber; // 目前的结果  
  8. private char lastOperator; // 表示上一运算符  
  9. private JTextField operation; // 结果栏  
  10. private JButton dot, plus, minus, multi, div, sqrt, equal, changePN, clear; // 运算符  
  11. private JButton[] numbers; // 数字  
  12.  

初始化变量:

 
 
 
  1. dotExist = false; // 表示当前的数是否有小数点  
  2. operated = false; // 表示任意运算符是否被按下  
  3. equaled = false; // 表示等号是否被按下  
  4. storedNumber = 0;  
  5. lastOperator = '?';  

初始化窗口变量:

 
 
 
  1. operation = new JTextField("0");  
  2. operation.setEditable(false);  
  3. numbers = new JButton[10];  
  4. for (int i = 0; i < 10; i++)  
  5. numbers[i] = new JButton("" + i);  
  6. dot = new JButton(".");  
  7. plus = new JButton("+");  
  8. minus = new JButton("-");  
  9. multi = new JButton("*");  
  10. div = new JButton("/");  
  11. sqrt = new JButton("√");  
  12. equal = new JButton("=");  
  13. changePN = new JButton("±");  
  14. clear = new JButton("AC");  
  15.  
  16. 将窗口物体放入窗口:  
  17. GridBagLayout layout = new GridBagLayout();  
  18. getContentPane().setLayout(layout);  
  19. addComponent(layout, operation, 0, 0, 4, 1);  
  20. addComponent(layout, numbers[1], 1, 0, 1, 1);  
  21. addComponent(layout, numbers[2], 1, 1, 1, 1);  
  22. addComponent(layout, numbers[3], 1, 2, 1, 1);  
  23. addComponent(layout, numbers[4], 2, 0, 1, 1);  
  24. addComponent(layout, numbers[5], 2, 1, 1, 1);  
  25. addComponent(layout, numbers[6], 2, 2, 1, 1);  
  26. addComponent(layout, numbers[7], 3, 0, 1, 1);  
  27. addComponent(layout, numbers[8], 3, 1, 1, 1);  
  28. addComponent(layout, numbers[9], 3, 2, 1, 1);  
  29. addComponent(layout, dot, 4, 0, 1, 1);  
  30. addComponent(layout, numbers[0], 4, 1, 1, 1);  
  31. addComponent(layout, sqrt, 4, 2, 1, 1);  
  32. addComponent(layout, plus, 1, 3, 1, 1);  
  33. addComponent(layout, minus, 2, 3, 1, 1);  
  34. addComponent(layout, multi, 3, 3, 1, 1);  
  35. addComponent(layout, div, 4, 3, 1, 1);  
  36. addComponent(layout, equal, 5, 0, 2, 1);  
  37. addComponent(layout, changePN, 5, 2, 1, 1);  
  38. addComponent(layout, clear, 5, 3, 1, 1);  
  39. }  
  40.  

对按钮进行反应的方法:

 
 
 
  1. public void actionPerformed(ActionEvent e) {  
  2. JButton btn = (JButton) e.getSource();  
  3. if (btn == clear) {  
  4. operation.setText("0");  
  5. dotExist = false;  
  6. storedNumber = 0;  
  7. lastOperator = '?';  
  8. else if (btn == equal) {  
  9. operate('=');  
  10. equaled = true;  
  11. else if (btn == plus) {  
  12. operate('+');  
  13. equaled = false;  
  14. else if (btn == minus) {  
  15. operate('-');  
  16. equaled = false;  
  17. else if (btn == multi) {  
  18. operate('*');  
  19. equaled = false;  
  20. else if (btn == div) {  
  21. operate('/');  
  22. equaled = false;  
  23. else if (btn == changePN) {  
  24. operate('p');  
  25. operate('=');  
  26. equaled = true;  
  27. else if (btn == sqrt) {  
  28. operate('s');  
  29. operate('=');  
  30. equaled = true;  
  31. else {  
  32. if (equaled)  
  33. storedNumber = 0;  
  34. for (int i = 0; i < 10; i++)  
  35. if (btn == numbers[i]) {  
  36. if (operation.getText().equals("0"))  
  37. operation.setText("" + i);  
  38. else if (!operated)  
  39. operation.setText(operation.getText() + i);  
  40. else {  
  41. operation.setText("" + i);  
  42. operated = false;  
  43. }  
  44. }  
  45. if (btn == dot && !dotExist) {  
  46. operation.setText(operation.getText() + ".");  
  47. dotExist = true;  
  48. }  
  49. }  
  50. }  

进行运算的方法:

 
 
 
  1. private void operate(char operator) {  
  2. double currentNumber = Double.valueOf(operation.getText())  
  3. .doubleValue();  
  4. if (lastOperator == '?')  
  5. storedNumber = currentNumber;  
  6. else if (lastOperator == '+')  
  7. storedNumber += currentNumber;  
  8. else if (lastOperator == '-')  
  9. storedNumber -= currentNumber;  
  10. else if (lastOperator == '*')  
  11. storedNumber *= currentNumber;  
  12. else if (lastOperator == '/')  
  13. storedNumber /= currentNumber;  
  14. else if (lastOperator == 'p')  
  15. storedNumber *= -1;  
  16. else if (lastOperator == 's')  
  17. storedNumber = Math.sqrt(currentNumber);  
  18. else if (lastOperator == '=' && equaled)  
  19. storedNumber = currentNumber;  
  20. operation.setText("" + storedNumber);  
  21. operated = true;  
  22. lastOperator = operator;  
  23. }  

快捷使用GridBagLayout的方法:

 
 
 
  1. private void addComponent(GridBagLayout layout, Component component,  
  2. int row, int col, int width, int height) {  
  3. GridBagConstraints constraints = new GridBagConstraints();  
  4. constraints.fill = GridBagConstraints.BOTH;  
  5. constraints.insets = new Insets(10, 2, 10, 2);  
  6. constraints.weightx = 100;  
  7. constraints.weighty = 100;  
  8. constraints.gridx = col;  
  9. constraints.gridy = row;  
  10. constraints.gridwidth = width;  
  11. constraints.gridheight = height;  
  12. layout.setConstraints(component, constraints);  
  13. if (component instanceof JButton)  
  14. ((JButton) component).addActionListener(this);  
  15. getContentPane().add(component);  
  16. }  

主方法初始化并显示窗口:

 
 
 
  1. public static void main(String[] args) {  
  2. Calculator3 calc = new Calculator3();  
  3. calc.setSize(290, 400);  
  4. calc.setVisible(true);  
  5. }  

本文名称:一则运算Java运算器相关代码
标题路径:http://www.shufengxianlan.com/qtweb/news26/355226.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联