




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、功能舉例:源程序如下:import java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import java.awt.Font;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.text.DecimalFormat;import javax.swing.BorderFactory;import javax.swing.ButtonGrou
2、p;import javax.swing.JButton;import javax.swing.JCheckBoxMenuItem;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JPanel;import javax.swing.JRadioButtonMenuItem;import javax.swing.JTextField;public class Calucator extends
3、 JFrame private JTextField tf;private JPanel panel1, panel2, panel3, panel4;private JMenuBar myBar;private JMenu menu1, menu2, menu3;private JMenuItem editItem1, editItem2, help1, help2, help3;private JRadioButtonMenuItem seeItem1, seeItem2;/單選框private JCheckBoxMenuItem seeItem3;/復(fù)選框private ButtonGr
4、oup bgb;private String back;private boolean IfResult = true, flag = false;private String oper = "="private double result = 0;private Num numActionListener;private DecimalFormat df;public Calucator()super("科學(xué)計(jì)算器");/設(shè)置標(biāo)題欄df = new DecimalFormat("#.#");/保留四位小數(shù)this.setLayout
5、(new BorderLayout(10, 5);panel1 = new JPanel(new GridLayout(1, 3, 10, 10);panel2 = new JPanel(new GridLayout(5, 6, 5, 5);/5行6列panel3 = new JPanel(new GridLayout(5, 1, 5, 5);panel4 = new JPanel(new BorderLayout(5, 5);/* * 菜單欄 */myBar = new JMenuBar();menu1 = new JMenu("編輯(E)");menu2 = new J
6、Menu("查看(V)");menu3 = new JMenu("幫助(H)");menu1.setFont(new Font("宋體", Font.PLAIN, 12);menu2.setFont(new Font("宋體", Font.PLAIN, 12);menu3.setFont(new Font("宋體", Font.PLAIN, 12);/* * 編輯欄 */editItem1 = new JMenuItem("復(fù)制(C) Ctrl+C");editItem2 =
7、 new JMenuItem("粘貼(P) Ctrl+V");editItem1.setFont(new Font("宋體",Font.PLAIN,12);editItem2.setFont(new Font("宋體",Font.PLAIN,12);/* * 查看欄 */seeItem1 = new JRadioButtonMenuItem("科學(xué)型(T)");seeItem2 = new JRadioButtonMenuItem("標(biāo)準(zhǔn)型(S)");seeItem3 = new JCheckB
8、oxMenuItem("數(shù)字分組(I)");seeItem1.setFont(new Font("宋體",Font.PLAIN,12);seeItem2.setFont(new Font("宋體",Font.PLAIN,12);seeItem3.setFont(new Font("宋體",Font.PLAIN,12);/* * 幫助欄 */help1 = new JMenuItem("幫助主題(H)");help2 = new JMenuItem("關(guān)于計(jì)算器(A)");he
9、lp1.setFont(new Font("宋體",Font.PLAIN,12);help2.setFont(new Font("宋體",Font.PLAIN,12);bgb = new ButtonGroup();/選項(xiàng)組menu1.add(editItem1);menu1.add(editItem2);menu2.add(seeItem1);menu2.add(seeItem2);menu2.addSeparator();/添加一條分割線menu2.add(seeItem3);menu3.add(help1);menu3.addSeparator()
10、;/添加一條分割線menu3.add(help2);myBar.add(menu1);myBar.add(menu2);myBar.add(menu3);this.setJMenuBar(myBar);numActionListener = new Num();/實(shí)現(xiàn)數(shù)字監(jiān)聽(tīng)/* * 文本域,即為計(jì)算器的屏幕顯示區(qū)域 */tf = new JTextField();tf.setEditable(false);/文本區(qū)域不可編輯tf.setBackground(Color.white);/文本區(qū)域的背景色tf.setHorizontalAlignment(JTextField.RIGHT);/文
11、字右對(duì)齊tf.setText("0");tf.setBorder(BorderFactory.createLoweredBevelBorder();init();/對(duì)計(jì)算器進(jìn)行初始化/* * 初始化操作 * 添加按鈕 */private void init()addButton(panel1, "Backspace", new Clear(), Color.red);addButton(panel1, "CE", new Clear(), Color.red);addButton(panel1, "C", new
12、Clear(), Color.red);addButton(panel2, "1/x", new Signs(), Color.magenta);addButton(panel2, "log", new Signs(), Color.magenta);addButton(panel2, "7", numActionListener, Color.blue);addButton(panel2, "8", numActionListener, Color.blue);addButton(panel2, "9&
13、quot;, numActionListener, Color.blue);addButton(panel2, "÷", new Signs(), Color.red);addButton(panel2, "n!", new Signs(), Color.magenta);addButton(panel2, "sqrt", new Signs(), Color.magenta);addButton(panel2, "4", numActionListener, Color.blue);addButton(
14、panel2, "5", numActionListener, Color.blue);addButton(panel2, "6", numActionListener, Color.blue);addButton(panel2, "×", new Signs(), Color.red);addButton(panel2, "sin", new Signs(), Color.magenta);addButton(panel2, "x2", new Signs(), Color.mage
15、nta);addButton(panel2, "1", numActionListener, Color.blue);addButton(panel2, "2", numActionListener, Color.blue);addButton(panel2, "3", numActionListener, Color.blue);addButton(panel2, "-", new Signs(), Color.red);addButton(panel2, "cos", new Signs()
16、, Color.magenta);addButton(panel2, "x3", new Signs(), Color.magenta);addButton(panel2, "0", numActionListener, Color.blue);addButton(panel2, "-/+", new Clear(), Color.blue);addButton(panel2, ".", new Dot(), Color.blue);addButton(panel2, "+", new Sign
17、s(), Color.red);addButton(panel2, "tan", new Signs(), Color.magenta);addButton(panel2, "%", new Signs(), Color.magenta);addButton(panel2, "", numActionListener, Color.orange);addButton(panel2, "e", numActionListener, Color.orange);addButton(panel2, ""
18、;, new Signs(), Color.orange);addButton(panel2, "=", new Signs(), Color.red);JButton btns = new JButton("計(jì)算器");btns.setBorder(BorderFactory.createLoweredBevelBorder();btns.setEnabled(false);/按鈕不可操作btns.setPreferredSize(new Dimension(20, 20);panel3.add(btns);/加入按鈕addButton(panel3,
19、 "MC", null, Color.red);addButton(panel3, "MR", null, Color.red);addButton(panel3, "MS", null, Color.red);addButton(panel3, "M+", null, Color.red);panel4.add(panel1, BorderLayout.NORTH);panel4.add(panel2, BorderLayout.CENTER);this.add(tf, BorderLayout.NORTH);t
20、his.add(panel3, BorderLayout.WEST);this.add(panel4);pack();this.setResizable(false);/窗口不可改變大小this.setLocation(300, 200);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/* * 統(tǒng)一設(shè)置按鈕的的使用方式 * param panel * param name * param action * param color */private void addButton(JPanel panel, String name, Ac
21、tionListener action, Color color)JButton bt = new JButton(name);panel.add(bt);/在面板上增加按鈕bt.setForeground(color);/設(shè)置前景(字體)顏色bt.addActionListener(action);/增加監(jiān)聽(tīng)事件/* * 計(jì)算器的基礎(chǔ)操作(+ - × ÷) * param x */private void getResult (double x)if(oper = "+")result += x;else if(oper = "-"
22、)result -= x;else if(oper = "×")result *= x;else if(oper = "÷")result /= x;else if(oper = "=")result = x;tf.setText(df.format(result);/* * 運(yùn)算符號(hào)的事件監(jiān)聽(tīng) */class Signs implements ActionListenerpublic void actionPerformed(ActionEvent e) /* * 用ActionEvent對(duì)象的getAction
23、Command()方法 * 取得與引發(fā)事件對(duì)象相關(guān)的字符串 */String str = e.getActionCommand();/* sqrt求平方根 */if(str.equals("sqrt")double i = Double.parseDouble(tf.getText();if(i>=0)/* * String.valueOf() 轉(zhuǎn)換為字符串 * df.format() 按要求保留四位小數(shù) * Math.sqrt() 求算數(shù)平方根 */tf.setText(String.valueOf(df.format(Math.sqrt(i);elsetf.set
24、Text("負(fù)數(shù)不能開(kāi)平方根");/* log求常用對(duì)數(shù) */else if(str.equals("log")double i = Double.parseDouble(tf.getText();if(i>0)tf.setText(String.valueOf(df.format(Math.log(i);elsetf.setText("負(fù)數(shù)不能求對(duì)數(shù)");/* %求百分比 */else if(str.equals("%")tf.setText(df.format(Double.parseDouble(tf.
25、getText() / 100);/* 1/x求倒數(shù) */else if(str.equals("1/x")if(Double.parseDouble(tf.getText() = 0)tf.setText("除數(shù)不能為零");elsetf.setText(df.format(1 / Double.parseDouble(tf.getText();/* sin求正弦函數(shù) */else if(str.equals("sin")double i = Double.parseDouble(tf.getText();tf.setText(St
26、ring.valueOf(df.format(Math.sin(i);/* cos求余弦函數(shù) */else if(str.equals("cos")double i = Double.parseDouble(tf.getText();tf.setText(String.valueOf(df.format(Math.cos(i);/* tan求正切函數(shù) */else if(str.equals("tan")double i = Double.parseDouble(tf.getText();tf.setText(String.valueOf(df.form
27、at(Math.tan(i);/* n!求階乘 */else if(str.equals("n!")double i = Double.parseDouble(tf.getText();if(i%2=0)|(i%2=1)/判斷為整數(shù)放進(jìn)行階乘操作int j = (int)i;/強(qiáng)制類(lèi)型轉(zhuǎn)換int result=1;for(int k=1;k<=j;k+)result *= k;tf.setText(String.valueOf(result);elsetf.setText("無(wú)法進(jìn)行階乘");/* x2求平方 */else if(str.equal
28、s("x2")double i = Double.parseDouble(tf.getText();tf.setText(String.valueOf(df.format(i*i);/* x3求立方 */else if(str.equals("x3")double i = Double.parseDouble(tf.getText();tf.setText(String.valueOf(df.format(i*i*i);/* 角度轉(zhuǎn)換 */* * 將角度值轉(zhuǎn)換成弧度值,方便三角函數(shù)的計(jì)算 */else if(str.equals(""
29、)double i = Double.parseDouble(tf.getText();tf.setText(String.valueOf(i/180*Math.PI);elseif(flag)IfResult = false;if(IfResult)oper = str;else getResult(Double.parseDouble(tf.getText();oper = str;IfResult = true;/* * 清除按鈕的事件監(jiān)聽(tīng) */class Clear implements ActionListenerpublic void actionPerformed(ActionE
30、vent e) /* * 用ActionEvent對(duì)象的getActionCommand()方法 * 取得與引發(fā)事件對(duì)象相關(guān)的字符串 */String str = e.getActionCommand();if(str = "C")tf.setText("0");IfResult = true;result = 0;else if(str = "-/+")double i = 0 - Double.parseDouble(tf.getText().trim();tf.setText(df.format(i);else if(str = "Backspace")if(Double.parseDouble(tf.getText() > 0)if(tf.getText().length() > 1)tf.setText(tf.getText().substring(0, tf.get
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 教育技術(shù)的商業(yè)化路徑與社會(huì)接受度研究
- 內(nèi)窺鏡下的人才培養(yǎng)模式分析與研究
- 教師情感與學(xué)生動(dòng)力心理連接的探索
- 教育技術(shù)如何助力遠(yuǎn)程學(xué)習(xí)減少地域差異
- 教育行業(yè)大數(shù)據(jù)的安全與隱私保護(hù)
- 技術(shù)驅(qū)動(dòng)的遠(yuǎn)程教育模式研究
- 教育創(chuàng)新項(xiàng)目中的人文關(guān)懷與社會(huì)責(zé)任
- 2025秋冀教版2024七年級(jí)上冊(cè)英語(yǔ)課件 Unit 2 6. Lesson 6
- 2025湖南大眾傳媒職業(yè)技術(shù)學(xué)院?jiǎn)握小堵殬I(yè)適應(yīng)性測(cè)試》模擬試題附參考答案詳解(黃金題型)
- 山東公務(wù)員行測(cè)真題及答案
- DL∕T 901-2017 火力發(fā)電廠煙囪(煙道)防腐蝕材料
- DL∕T 664-2016 帶電設(shè)備紅外診斷應(yīng)用規(guī)范
- 河北省承德市平泉市2023-2024學(xué)年七年級(jí)下學(xué)期期末數(shù)學(xué)試題(無(wú)答案)
- DL-T448-2016電能計(jì)量裝置技術(shù)管理規(guī)程
- 2024建筑工程勞務(wù)分包合同標(biāo)準(zhǔn)范本
- QB/T 2660-2024 化妝水(正式版)
- 《化工和危險(xiǎn)化學(xué)品生產(chǎn)經(jīng)營(yíng)單位重大生產(chǎn)安全事故隱患判定標(biāo)準(zhǔn)(試行)》解讀課件
- 數(shù)學(xué)分析教學(xué)課件
- 基于Python+MySQL的員工管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 拔絲生產(chǎn)企業(yè)管理制度
- 可視對(duì)講及門(mén)禁的課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論