




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 今天閑著沒事,用java寫了一個簡單計算器,能實現(xiàn)簡單的數據計算。語言:java開發(fā)環(huán)境:eclipse(因為是按自己的想法寫的,所以有些不盡人意的地方請諒解,希望對初學java者有些許幫助,有不好理解的地方,我盡量注釋,有不理解的可以在百度HI我) 事先一定要安裝好JDK,可以在下載,配置好環(huán)境變量,再安裝好eclipse,也可以在網上下載到,具體自己去找;然后打開eclipse建立一個工程,取名隨便,我這里取名Calculator;然后在建立好的工程里面新建兩個包,報名也自己取,盡量易懂,容易讓人理解;我這里建立了兩個包,Client和UI,等下在Client里面放的是主函數,UI里面放
2、的是界面文件和控制器;好了下面開始寫代碼;一、 先寫界面代碼: 在UI包里面新建一個Class文件,取名自己想,這里我寫的是CalculatorFramepackage ui;import java.awt.Color;import java.awt.Font;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing
3、.JOptionPane;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.border.TitledBorder;public class CalculatorFrame extends JFrame private static final long serialVersionUID = 1L;public String opt;public String str;private JTextArea show;private Cli
4、entContext clientContext;/引用控制器對象 /*因為調用了控制器里面的方法,所以要對控制器的對象進行賦值,否則運行會出現(xiàn)空指針異常*/public void setClientContext(ClientContext clientContext) this.clientContext = clientContext;public CalculatorFrame() init();private void init() setTitle(" Simple Calculator");setBounds(533, 184, 300, 400);setCo
5、ntentPane(creatContentPane();private JPanel creatContentPane() JPanel p = new JPanel(new GridLayout(4, 1);/* 在面板里面添加4個面板*/p.add(showPane();/顯示屏p.add(btnPane1();/下面三個都是按鈕p.add(btnPane2();p.add(btnPane3();return p;/*實現(xiàn)各個面板*/private JScrollPane showPane() JScrollPane p = new JScrollPane();p.setBorder(n
6、ew TitledBorder("Display:");show = new JTextArea();show.setFont(new Font("",Font.PLAIN,25);show.setForeground(Color.RED);show.setLineWrap(true);show.setEditable(false);p.getViewport().add(show);return p;private JPanel btnPane1() JPanel p = new JPanel(new GridLayout(2, 4);JButton
7、add = new JButton("+");JButton jian = new JButton("-");JButton cheng = new JButton("*");JButton chu = new JButton("/");JButton one = new JButton("1");JButton two = new JButton("2");JButton three = new JButton("3");JButton anser =
8、new JButton("=");p.add(add);p.add(jian);p.add(cheng);p.add(chu);p.add(one);p.add(two);p.add(three);p.add(anser);/*用內部類實現(xiàn)按鈕監(jiān)視器,后面的都是這樣*/one.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent arg0) String number = show.getText() + String.valueOf(1);/按了數字“1
9、”按/鈕后,操作顯示屏,既更新一下顯示屏clientContext.setNumber(number);/調用控制器里面的方法);two.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent arg0) String number = show.getText() + String.valueOf(2);clientContext.setNumber(number););three.addActionListener(new ActionListener() Override
10、public void actionPerformed(ActionEvent e) / TODO Auto-generated method stubString number = show.getText() + String.valueOf(3);clientContext.setNumber(number););add.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent arg0) opt = "+"clientContext.setOpt(op
11、t););jian.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubopt = "-"clientContext.setOpt(opt););cheng.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated me
12、thod stubopt = "*"clientContext.setOpt(opt););chu.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubopt = "/"clientContext.setOpt(opt););anser.addActionListener(new ActionListener() Overridepublic void actio
13、nPerformed(ActionEvent arg0) str = "="clientContext.setAnswer(str););return p;private JPanel btnPane2() JPanel p = new JPanel(new GridLayout(2, 4);JButton four = new JButton("4");JButton five = new JButton("5");JButton six = new JButton("6");JButton pi = new J
14、Button("PI");JButton seven = new JButton("7");JButton eight = new JButton("8");JButton nine = new JButton("9");JButton com = new JButton(".");p.add(four);p.add(five);p.add(six);p.add(pi);p.add(seven);p.add(eight);p.add(nine);p.add(com);four.addAction
15、Listener(new ActionListener() Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubString number = show.getText() + String.valueOf(4);clientContext.setNumber(number););five.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent e) / TODO
16、 Auto-generated method stubString number = show.getText() + String.valueOf(5);clientContext.setNumber(number););six.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubString number = show.getText() + String.valueOf(6);clientCont
17、ext.setNumber(number););seven.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubString number = show.getText() + String.valueOf(7);clientContext.setNumber(number););eight.addActionListener(new ActionListener() Overridepublic vo
18、id actionPerformed(ActionEvent e) / TODO Auto-generated method stubString number = show.getText() + String.valueOf(8);clientContext.setNumber(number););nine.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubString number = show
19、.getText() + String.valueOf(9);clientContext.setNumber(number););com.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubsetShow(show.getText() + "."););pi.addActionListener(new ActionListener() Overridepublic void acti
20、onPerformed(ActionEvent e) / TODO Auto-generated method stubsetShow(String.valueOf(Math.PI););return p;private JPanel btnPane3() JPanel p = new JPanel(new GridLayout(2, 4);JButton zero = new JButton("0");JButton sqrt = new JButton("");JButton guiling = new JButton("C");
21、final JButton help = new JButton("Help");p.add(zero);p.add(sqrt);p.add(guiling);p.add(help);help.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubJOptionPane.showMessageDialog(help, "注意:假如第二運算數為空的話,這里將默認為0.0!&qu
22、ot;););guiling.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubclientContext.setMc(););zero.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubString num
23、ber = show.getText() + String.valueOf(0);clientContext.setNumber(number););sqrt.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubsetShow("" + Math.sqrt(getShow(););return p;/*更新計算器的顯示屏*/public void setShow(String str
24、) show.setText(str);/*獲取當前顯示屏里面的數據*/public Double getShow() String str = show.getText();if (str.equals("") str = "0.0"return Double.valueOf(str);/*獲取當前選擇的運算符:比如加或減或乘或除*/public String getOpt() return this.opt;二、 寫控制器代碼在UI包建立一個Class,我取名ClientContextpackage ui;import java.util.Array
25、List;import java.util.List;import javax.swing.JOptionPane;public class ClientContext private CalculatorFrame calculatorFrame;private Double first = 0.0;private Double next = 0.0;public void setCalculatorFrame(CalculatorFrame calculatorFrame) this.calculatorFrame = calculatorFrame;double sum = 0;publ
26、ic void setNumber(String str) calculatorFrame.setShow(str);public void setOpt(String opt) first = calculatorFrame.getShow();calculatorFrame.setShow("");public void setAnswer(String str) /按了“=”后,對數據按運算符進行計算next = calculatorFrame.getShow();/ calculatorFrame.setShow(str);/switch(str)/if (calc
27、ulatorFrame.getOpt() = "+") double answer = first + next;calculatorFrame.setShow(String.valueOf(answer); else if (calculatorFrame.getOpt() = "-") double answer = first - next;calculatorFrame.setShow(String.valueOf(answer); else if (calculatorFrame.getOpt() = "*") double
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030中國自動香水機行業(yè)市場深度研究及發(fā)展前景投資可行性分析報告
- 2025至2030中國自動細胞清洗機行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 2025至2030中國自動柜員機行業(yè)市場深度研究及發(fā)展前景投資可行性分析報告
- 2025至2030中國膝關節(jié)重建裝置行業(yè)市場深度研究及發(fā)展前景投資可行性分析報告
- 2025至2030中國脫硫醇催化劑行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 2025至2030中國脊柱非融合技術行業(yè)產業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 初中生化學元素基礎講座課件
- 2025至2030中國腫瘤壞死因子受體超家族成員1A行業(yè)市場占有率及投資前景評估規(guī)劃報告
- 2025至2030中國聯(lián)合辦公行業(yè)發(fā)展分析及產業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 2025至2030中國翅片密封袋行業(yè)產業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 滴灌帶造顆粒合同協(xié)議
- 學校總務后勤工作總結模版
- 《蛇咬傷應急處理》課件
- 2025年錨栓市場發(fā)展現(xiàn)狀
- 養(yǎng)豬場建設項目可行性研究報告(模板范文)
- 2025年四級中式烹調師(中級)職業(yè)技能鑒定參考試題庫(含答案)
- 夜間作業(yè)安全培訓培訓資料
- 中藥知識講解課件
- 施工資源需求計劃與調配策略
- 預制箱梁首件工程施工總結
- 2024-2025學年人教版高二化學選擇性必修3配套課件 基礎課時4 有機物分子式和分子結構的確定
評論
0/150
提交評論