java實現(xiàn)簡單的計算器類實例
更新時間:2015年10月06日 15:25:28 作者:路人甲123
這篇文章主要介紹了java實現(xiàn)簡單的計算器類,涉及java針對鍵盤監(jiān)聽及數(shù)字運算的處理技巧,具有一定參考借鑒價值,需要的朋友可以參考下
本文實例講述了java實現(xiàn)簡單的計算器類。分享給大家供大家參考。具體如下:
package chap; import java.awt.BorderLayout; import java.awt.Color; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text.DecimalFormat; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; public class Calculator { private JFrame frame; private JPanel panel,panelKeys,panelKeys_up,panelKeys_down; private JTextField textComputer;//計算區(qū)域 private JButton buttonBk,buttonC;//退格鍵和清零鍵 private JButton button[];//數(shù)字鍵組 private JButton buttonDot,buttonAddSub,buttonAdd,buttonSub,buttonMul,buttonDiv,button1,button2,button3,buttonEqual; private double result;//計算結(jié)果 private final short ADD = 1; private final short SUB = 2; private final short MUL = 3; private final short DIV = 4; private short operator = -1;//運算符 public Calculator(){ frame = new JFrame("計算機"); frame.setSize(400, 250); panel = new JPanel();//全局面板 panel.setVisible(true); frame.setVisible(true); frame.getContentPane().add(panel); ActionListener listener = new ComputerActionListener();//按鍵監(jiān)聽器 //計算區(qū) textComputer = new JTextField(15); textComputer.setText(""); textComputer.setEditable(false); textComputer.setBackground(new Color(255,255,255)); //功能鍵上半部分 panelKeys_up = new JPanel(); panelKeys_up.setLayout(new FlowLayout(FlowLayout.RIGHT)); buttonBk = new JButton("Backspace"); buttonBk.setForeground(new Color(255,0,0)); buttonC = new JButton("C"); buttonC.setForeground(new Color(255,0,0)); buttonBk.addActionListener(listener); buttonC.addActionListener(listener); panelKeys_up.add(buttonBk); panelKeys_up.add(buttonC); //功能鍵下半部分 panelKeys_down = new JPanel(); panelKeys_down.setLayout(new GridLayout(4,5)); button = new JButton[10]; for(int i = 0;i < button.length;i++){ button[i] = new JButton(Integer.toString(i)); button[i].setForeground(new Color(255,0,0)); } buttonAddSub = new JButton("+/-"); buttonAddSub.setForeground(new Color(255,0,0)); buttonAdd = new JButton("+"); buttonAdd.setForeground(new Color(255,0,0)); buttonSub = new JButton("-"); buttonSub.setForeground(new Color(255,0,0)); buttonMul = new JButton("*"); buttonMul.setForeground(new Color(255,0,0)); buttonDiv = new JButton("/"); buttonDiv.setForeground(new Color(255,0,0)); button1 = new JButton(); button2 = new JButton(); button3 = new JButton(); button1.setForeground(new Color(255,0,0)); button2.setForeground(new Color(255,0,0)); button3.setForeground(new Color(255,0,0)); buttonEqual = new JButton("="); buttonEqual.setForeground(new Color(255,0,0)); buttonAddSub.addActionListener(listener); buttonAdd.addActionListener(listener); buttonSub.addActionListener(listener); buttonMul.addActionListener(listener); buttonDiv.addActionListener(listener); buttonEqual.addActionListener(listener); for(int i = 0 ; i <=9 ; i++){ button[i].addActionListener(listener); } for(int i = 0 ; i <=9 ; i++){ panelKeys_down.add(button[i]); } panelKeys_down.add(buttonAddSub); panelKeys_down.add(buttonAdd); panelKeys_down.add(buttonSub); panelKeys_down.add(buttonMul); panelKeys_down.add(buttonDiv); panelKeys_down.add(buttonEqual); panel.setLayout(new BorderLayout()); panel.add(textComputer,BorderLayout.NORTH); panel.add(panelKeys_up,BorderLayout.CENTER); panel.add(panelKeys_down,BorderLayout.SOUTH); } class ComputerActionListener implements ActionListener{ @Override public void actionPerformed(ActionEvent event) { // TODO Auto-generated method stub Object keyButton = event.getSource(); String text = textComputer.getText(); DecimalFormat df = new DecimalFormat("0.###########"); //Backspace if(keyButton == buttonBk && text.length() > 0){ textComputer.setText(text.substring(0,text.length()-1)); } //C鍵 if(keyButton == buttonC){ result = 0; textComputer.setText(""); } //數(shù)字鍵 for(int i=0;i<10;i++){ if(keyButton == button[i]){ textComputer.setText(text+i); } } if(keyButton == buttonAdd){ operator = 1; } if(keyButton == buttonSub){ operator = 2; } if(keyButton == buttonMul){ operator = 3; } if(keyButton == buttonDiv){ operator = 4; } //符號鍵 if(keyButton == buttonAdd || keyButton == buttonSub || keyButton == buttonMul || keyButton == buttonDiv || keyButton == buttonEqual){ switch(operator){ case ADD: result += Double.parseDouble(text); break; case SUB: result -=Double.parseDouble(text); break; case MUL: result *=Double.parseDouble(text); break; case DIV: result /=Double.parseDouble(text); break; default: result = Double.parseDouble(text); } textComputer.setText(""); } if(keyButton == buttonEqual){ textComputer.setText(String.valueOf(result)); } } } public static void main(String args[]){ new Calculator(); } }
希望本文所述對大家的java程序設(shè)計有所幫助。
相關(guān)文章
Tomcat?8.5?+mysql?5.7+jdk1.8開發(fā)JavaSE的金牌榜小項目
這篇文章主要介紹了Tomcat?8.5?+mysql?5.7+jdk1.8開發(fā)JavaSE的金牌榜小項目,本文通過圖文實例相結(jié)合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05帶你了解Java數(shù)據(jù)結(jié)構(gòu)和算法之無權(quán)無向圖
這篇文章主要為大家介紹了Java數(shù)據(jù)結(jié)構(gòu)和算法之無權(quán)無向圖?,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-01-01Spring Boot 3.x 全新的熱部署配置方式詳解(IntelliJ ID
這篇文章主要介紹了Spring Boot 3.x 全新的熱部署配置方式(IntelliJ IDEA 2023.1),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07SpringBoot整合Keycloak實現(xiàn)單點登錄的示例代碼
本文主要介紹了SpringBoot整合Keycloak實現(xiàn)單點登錄的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03MyBatis_Generator插件的安裝以及簡單使用方法(圖解)
下面小編就為大家?guī)硪黄狹yBatis_Generator插件的安裝以及簡單使用方法(圖解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05Spring調(diào)度框架EnableScheduling&Scheduled源碼解析
這篇文章主要介紹了Spring調(diào)度框架EnableScheduling&Scheduled源碼解析,@EnableScheduling&Scheduled定時調(diào)度框架,本著不僅知其然還要知其所以然的指導思想,下面對該調(diào)度框架進行源碼解析,以便更好的理解其執(zhí)行過程,需要的朋友可以參考下2024-01-01