版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
功能舉例:源程序如下:importjava.awt.BorderLayout;importjava.awt.Color;importjava.awt.Dimension;importjava.awt.Font;importjava.awt.GridLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.text.DecimalFormat;importjavax.swing.BorderFactory;importjavax.swing.ButtonGroup;importjavax.swing.JButton;importjavax.swing.JCheckBoxMenuItem;importjavax.swing.JFrame;importjavax.swing.JMenu;importjavax.swing.JMenuBar;importjavax.swing.JMenuItem;importjavax.swing.JPanel;importjavax.swing.JRadioButtonMenuItem;importjavax.swing.JTextField;publicclassCalucatorextendsJFrame{ privateJTextFieldtf; privateJPanelpanel1,panel2,panel3,panel4; privateJMenuBarmyBar; privateJMenumenu1,menu2,menu3; privateJMenuItemeditItem1,editItem2,help1,help2,help3; privateJRadioButtonMenuItemseeItem1,seeItem2;//單選框 privateJCheckBoxMenuItemseeItem3;//復(fù)選框 privateButtonGroupbgb; privateStringback; privatebooleanIfResult=true,flag=false; privateStringoper="="; privatedoubleresult=0; privateNumnumActionListener; privateDecimalFormatdf; publicCalucator(){ super("科學(xué)計(jì)算器");//設(shè)置標(biāo)題欄 df=newDecimalFormat("#.####");//保留四位小數(shù) this.setLayout(newBorderLayout(10,5)); panel1=newJPanel(newGridLayout(1,3,10,10)); panel2=newJPanel(newGridLayout(5,6,5,5));//5行6列 panel3=newJPanel(newGridLayout(5,1,5,5)); panel4=newJPanel(newBorderLayout(5,5)); /** *菜單欄 */ myBar=newJMenuBar(); menu1=newJMenu("編輯(E)"); menu2=newJMenu("查看(V)"); menu3=newJMenu("幫助(H)"); menu1.setFont(newFont("宋體",Font.PLAIN,12)); menu2.setFont(newFont("宋體",Font.PLAIN,12)); menu3.setFont(newFont("宋體",Font.PLAIN,12)); /** *編輯欄 */ editItem1=newJMenuItem("復(fù)制(C)Ctrl+C"); editItem2=newJMenuItem("粘貼(P)Ctrl+V"); editItem1.setFont(newFont("宋體",Font.PLAIN,12)); editItem2.setFont(newFont("宋體",Font.PLAIN,12)); addButton(panel2,"-/+",newClear(),Color.blue); addButton(panel2,".",newDot(),Color.blue); addButton(panel2,"+",newSigns(),Color.red); addButton(panel2,"tan",newSigns(),Color.magenta); addButton(panel2,"%",newSigns(),Color.magenta); addButton(panel2,"π",numActionListener,Color.orange); addButton(panel2,"e",numActionListener,Color.orange); addButton(panel2,"′″",newSigns(),Color.orange); addButton(panel2,"=",newSigns(),Color.red); JButtonbtns=newJButton("計(jì)算器"); btns.setBorder(BorderFactory.createLoweredBevelBorder()); btns.setEnabled(false);//按鈕不可操作 btns.setPreferredSize(newDimension(20,20)); panel3.add(btns);//加入按鈕 addButton(panel3,"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); this.add(panel3,BorderLayout.WEST); this.add(panel4); pack(); this.setResizable(false);//窗口不可改變大小 this.setLocation(300,200); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } /** *統(tǒng)一設(shè)置按鈕的的使用方式 *@parampanel *@paramname *@paramaction *@paramcolor */ privatevoidaddButton(JPanelpanel,Stringname,ActionListeneraction,Colorcolor){ JButtonbt=newJButton(name); panel.add(bt);//在面板上增加按鈕 bt.setForeground(color);//設(shè)置前景(字體)顏色 bt.addActionListener(action);//增加監(jiān)聽事件 } /** *計(jì)算器的基礎(chǔ)操作(+-×÷) *@paramx */ privatevoidgetResult(doublex){ if(oper=="+"){result+=x;} elseif(oper=="-"){result-=x;} elseif(oper=="×"){result*=x;} elseif(oper=="÷"){result/=x;} elseif(oper=="="){result=x;} tf.setText(df.format(result)); } /** *運(yùn)算符號(hào)的事件監(jiān)聽 */ classSignsimplementsActionListener{ publicvoidactionPerformed(ActionEvente){ /* *用ActionEvent對(duì)象的getActionCommand()方法 *取得與引發(fā)事件對(duì)象相關(guān)的字符串 */ Stringstr=e.getActionCommand(); /*sqrt求平方根*/ if(str.equals("sqrt")){ doublei=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)))); } else{ tf.setText("負(fù)數(shù)不能開平方根"); } } /*log求常用對(duì)數(shù)*/ elseif(str.equals("log")){ doublei=Double.parseDouble(tf.getText()); if(i>0){ tf.setText(String.valueOf(df.format(Math.log(i)))); }else{ tf.setText("負(fù)數(shù)不能求對(duì)數(shù)"); } } /*%求百分比*/ elseif(str.equals("%")){ tf.setText(df.format(Double.parseDouble(tf.getText())/100)); } /*1/x求倒數(shù)*/ elseif(str.equals("1/x")){ if(Double.parseDouble(tf.getText())==0){ tf.setText("除數(shù)不能為零"); }else{ tf.setText(df.format(1/Double.parseDouble(tf.getText()))); } } /*sin求正弦函數(shù)*/ elseif(str.equals("sin")){ doublei=Double.parseDouble(tf.getText()); tf.setText(String.valueOf(df.format(Math.sin(i)))); } /*cos求余弦函數(shù)*/ elseif(str.equals("cos")){ doublei=Double.parseDouble(tf.getText()); tf.setText(String.valueOf(df.format(Math.cos(i)))); } /*tan求正切函數(shù)*/ elseif(str.equals("tan")){ doublei=Double.parseDouble(tf.getText()); tf.setText(String.valueOf(df.format(Math.tan(i)))); } /*n!求階乘*/ elseif(str.equals("n!")){ doublei=Double.parseDouble(tf.getText()); if((i%2==0)||(i%2==1))//判斷為整數(shù)放進(jìn)行階乘操作 { intj=(int)i;//強(qiáng)制類型轉(zhuǎn)換 intresult=1; for(intk=1;k<=j;k++) result*=k; tf.setText(String.valueOf(result)); } else { tf.setText("無(wú)法進(jìn)行階乘"); } } /*x^2求平方*/ elseif(str.equals("x^2")){ doublei=Double.parseDouble(tf.getText()); tf.setText(String.valueOf(df.format(i*i))); } /*x^3求立方*/ elseif(str.equals("x^3")){ doublei=Double.parseDouble(tf.getText()); tf.setText(String.valueOf(df.format(i*i*i))); } /*′″角度轉(zhuǎn)換*/ /** *將角度值轉(zhuǎn)換成弧度值,方便三角函數(shù)的計(jì)算 */ elseif(str.equals("′″")){ doublei=Double.parseDouble(tf.getText()); tf.setText(String.valueOf(i/180*Math.PI)); } else{ if(flag){ IfResult=false; } if(IfResult){ oper=str; }else{ getResult(Double.parseDouble(tf.getText())); oper=str; IfResult=true; } } } } /** *清除按鈕的事件監(jiān)聽 */ classClearimplementsActionListener{ publicvoidactionPerformed(ActionEvente){ /* *用ActionEvent對(duì)象的getActionCommand()方法 *取得與引發(fā)事件對(duì)象相關(guān)的字符串 */ Stringstr=e.getActionCommand(); if(str=="C"){ tf.setText("0"); IfResult=true; result=0; }elseif(str=="-/+"){ doublei=0-Double.parseDouble(tf.getText().trim()); tf.setText(df.format(i)); }elseif(str=="Backspace"){ if(Double.parseDouble(tf.getText())>0){ if(tf.getText().length()>1){ tf.setText(tf.getText().substring(0,tf.getText().length()-1)); //使用退格刪除最后一位字符 }else{ tf.setText("0"); IfResult=true; } }else{ if(tf.getText().length()>2){ tf.setText(tf.getText().substring(0,tf.getText().length()-1)); }else{ tf.setText("0"); IfResult=true; } } }elseif(str=="CE"){ tf.setText("0"); IfResult=true; } } } /** *數(shù)字輸
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年安全風(fēng)險(xiǎn)評(píng)估制度和事故隱患排查制度范本(三篇)
- 2024年合伙經(jīng)營(yíng)協(xié)議范文(二篇)
- 2024年學(xué)校衛(wèi)生工作總結(jié)參考樣本(四篇)
- 2024年幼兒園大班計(jì)劃樣本(二篇)
- 2024年小學(xué)生寒假學(xué)習(xí)計(jì)劃例文(四篇)
- 2024年司機(jī)年終工作總結(jié)例文(三篇)
- 2024年商品房產(chǎn)購(gòu)銷合同例文(二篇)
- 2024年學(xué)校安全責(zé)任追究制度范例(二篇)
- 2024年小學(xué)少先隊(duì)工作總結(jié)參考范本(四篇)
- 2024年小學(xué)音樂教學(xué)計(jì)劃樣本(二篇)
- 幼兒園園長(zhǎng)的教師隊(duì)伍建設(shè)與管理
- 電力行業(yè)網(wǎng)絡(luò)安全
- WORD操作技巧深度練習(xí)(20題)
- 提升員工營(yíng)銷能力的企業(yè)教育培訓(xùn)
- 大學(xué)生社團(tuán)對(duì)大學(xué)生的影響的社會(huì)調(diào)查報(bào)告
- 麻醉科臨床診療指南2020版
- 馬自達(dá)3昂克賽拉說(shuō)明書
- 事業(yè)單位考試公文寫作相關(guān)試題
- 全國(guó)教育科學(xué)規(guī)劃課題申報(bào)書:67.《港澳臺(tái)大中小學(xué)生國(guó)情教育高質(zhì)量發(fā)展研究》
- 搪瓷鋼板安裝技術(shù)
- 某衛(wèi)生院安全生產(chǎn)事故隱患排查治理制度
評(píng)論
0/150
提交評(píng)論