java課程設(shè)計計算器3科學(xué)計算器_第1頁
java課程設(shè)計計算器3科學(xué)計算器_第2頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

10/10java課程設(shè)計計算器3科學(xué)計算器importjavax.swing.*;//把javax包里面的swing包里面的所有東西引進來

importjava.awt.*;//導(dǎo)入awt包里的所有java類

importjava.awt.event.*;//導(dǎo)入包event

importjava.text.DecimalFormat;//處理文本、日期、數(shù)字和消息的類和接口

importjava.text.SimpleDateFormat;

importjava.util.Calendar;

importjava.util.Date;

importjava.util.GregorianCalendar;

importjava.awt.BasicStroke;

importjava.awt.BorderLayout;

importjava.awt.Color;

importjava.awt.Dimension;

importjava.awt.Font;

importjava.awt.Graphics;

importjava.awt.Graphics2D;

importjava.awt.GridLayout;

importjava.awt.Image;

importjava.awt.Toolkit;

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

importjava.awt.geom.Ellipse2D;

importjava.awt.geom.Line2D;

importjava.awt.geom.Point2D;

publicclassbiaozhunjisuanqiextendsJFrameimplementsActionListener{//public代表該類公有

//class聲明一個類

//biaozhunjisuanqi為類名

//extends是繼承類

//implements代表實現(xiàn)接口

//窗體名稱biaozhunjisuanqi繼承JFrame類和ActionListener接口,并實現(xiàn)publicvoidactionPerformed(ActionEvente){}方法

privatestaticfinallongserialVersionUID=1L;//serialVersionUID相當于java類的身份證,默認為1L,serialVersionUID作用是序列化時保持版本的兼容性,即在版本升級時反序列化仍保持對象的唯一性

privateJPaneljContentPane=null;//創(chuàng)建面板對象,null代表為這些變量賦初值為空,即不分配內(nèi)存空間,變量不指向任何地址。private是訪問控制符,代表這些變量的訪問級別為私有,私有級別只能在當前類中進行訪問,這些(JPanel、JTextArea、JPanel、JButton)是java中AWT(包)中的類,用能進行桌面級應(yīng)用程序的開發(fā),就像平時用的word,上面有各種文本框,菜單欄,工具欄按鈕等等,這些都是對象

privateJPaneljPanel=null;//JPanel作為一個容器,可以包容一些組件,然后將這個JPanel

對象作為一個組件添加到另一個容器(稱作父容器)中

privateJButtonjButton=null;//9JButton是用戶進行計算時主要的使用工具,一般為其添加actionPerformed事件。

privateJButtonjButton1=null;//(/)

privateJButtonjButton2=null;//(sqrt)

privateJButtonjButton3=null;//(4)

privateJButtonjButton4=null;//(5)

privateJButtonjButton5=null;//(6)

privateJButtonjButton6=null;//(*)

privateJButtonjButton7=null;//(%)

privateJButtonjButton8=null;//(1)

privateJButtonjButton9=null;//(7)

privateJButtonjButton10=null;//(8)

privateJButtonjButton11=null;//(2)

privateJButtonjButton12=null;//(3)

privateJButtonjButton13=null;//(-)

privateJButtonjButton14=null;//(1/x)

privateJButtonjButton15=null;//(0)

privateJButtonjButton16=null;//(+/-)

privateJButtonjButton17=null;//(.)

privateJButtonjButton18=null;//(+)

privateJButtonjButton19=null;//(=)

privateJTextFieldjTextField=null;//JTextField是一個的文本框

privateJTextFieldtextMemory=null;//作為輸入M用

privateJButtonjButton20=null;//(MC)

privateJButtonjButton21=null;//(MR)

privateJButtonjButton22=null;//(MS)

privateJButtonjButton23=null;//(M+)

privateJButtonjButton24=null;//(Backspace)

privateJButtonjButton25=null;//(CE)

privateJButtonjButton26=null;//(C)

doublememoryd;//使用內(nèi)存中存儲的數(shù)字

intmemoryi;

//科學(xué)計算器按鈕

privateJButtonjButton31=null;//(十六進制)

privateJButtonjButton32=null;//(sin)

privateJButtonjButton33=null;//(cos)

privateJButtonjButton34=null;//(十進制)

privateJButtonjButton35=null;//(tan)

privateJButtonjButton36=null;//(弧度)

privateJButtonjButton37=null;//(八進制)

privateJButtonjButton38=null;//(X^2)

privateJButtonjButton39=null;//(X^3)

privateJButtonjButton40=null;//(二進制)

privateJButtonjButton41=null;//(X^y)

privateJButtonjButton42=null;//(n!)

privateJButtonjButton43=null;//(Pi)

privateJButtonjButton44=null;//(ln)

privateJButtonjButton45=null;//(log10)

//A-F

privateJButtonjButton46=null;//(A)

privateJButtonjButton47=null;//(B)

privateJButtonjButton48=null;//(C)

privateJButtonjButton49=null;//(D)

privateJButtonjButton50=null;//(E)

privateJButtonjButton51=null;//(F)

privateJPaneljPanel1=null;

privateJPaneljContentPane1=null;

privateStringstr="";//聲明私有字符串變量str

privatedoubledataone;//變量名用來存儲運算的數(shù)據(jù)

privatecharOperator='A';//存放運算符

privatebooleanpointIsTyped=false;//判斷輸入的數(shù)據(jù)是否是小數(shù)

privateJMenuBarjJMenuBar=null;

privateJMenujMenu=null;//JMenu定義菜單編輯鍵

privateJMenuItemjMenuItem=null;//JMenuItem菜單中項的實現(xiàn)復(fù)制(Ctrl+C)

privateJMenuItemjMenuItem1=null;//粘貼(Ctrl+V)

privateJMenujMenu1=null;//定義查看菜單

privateJMenuItemjMenuItem3=null;//幫助主題

privateJMenuItemjMenuItem4=null;//關(guān)于計算器

privateJMenujMenu2=null;//定義幫助菜單

privateJMenuItemjMenuItem5=null;//標準型

privateJMenuItemjMenuItem6=null;//科學(xué)型

privateJMenuItemjMenuItem7=null;//勾股定理

privateJMenuItemjMenuItem8=null;//解一元二次方程

DecimalFormatdf;//保留小數(shù)位數(shù)

privateJButtongetJButton(){//使用privateJButtongetJButton()方法添加按鈕并給按鈕命名

if(jButton==null){

jButton=newJButton();

jButton.setText("9");

jButton.setFont(newFont("楷體",Font.BOLD,30));//使用

jButton.setFont(newFont("楷體",Font.BOLD,30))方法設(shè)置按鈕的字體

jButton.setForeground(newColor(250,0,0));//使用方法設(shè)置按鈕的字體顏色紅色、綠色和藍色

jButton.setFocusable(false);

jButton.addActionListener(newActionListener(){//相當于聲明了一個實現(xiàn)了ActionListener接口的對象..(因為可以看到其中的方法都被重寫實現(xiàn)了.)更多具體細節(jié),可以參考java匿名類的使用,就是把對象jButton注冊給事件監(jiān)聽者newActionListener(){PublicvoidactionPerformed(ActionEventae){}}說明一下newActionListener(){PublicvoidactionPerformed(ActionEvent){}}是一個匿名內(nèi)部類,用來實現(xiàn)對動作事件的處理

publicvoidactionPerformed(ActionEvente){//這是ActionListener中定義的方法,事件監(jiān)聽器,當定義的事件捕獲以后就會執(zhí)行這個方法里面的代碼

str+="9";

jTextField.setText(str);//jTextField是api(ApplicationProgramInterface應(yīng)用程序接口)里面得一個文本主鍵,要掉用它就要import實現(xiàn)接口,jtextfield文本框...用來建立文本框的,用戶可以在文本框輸入單行的文本。在JavaSwing中的加“J”字頭的文本輸入框包括兩種,單行文本輸入框(jtextfield)和多行文本輸入框(JTextArea)。

}

});

//單擊后變色

jButton.addMouseListener(newMouseListener(){//設(shè)置數(shù)字按鈕1到9并添加監(jiān)控,使其在發(fā)生鼠標事件時改變按鈕顏色

publicvoidactionPerformed(MouseEvente){//這是MouseListener中定義的方法,java的事件監(jiān)聽器的一個,例如點擊按鈕、文本框里按下回車,就會調(diào)用這個里面的方法。

jButton.setForeground(newColor(0,100,0));//Foreground指前背景色}

publicvoidmouseClicked(MouseEvente){//鼠標單擊方法(鼠標點擊后)

jButton.setForeground(newColor(0,150,100));

}

publicvoidmouseEntered(MouseEvente){//鼠標進入組件方法(鼠標進入某個區(qū)域后)

jButton.setForeground(newColor(0,0,250));

}

publicvoidmouseExited(MouseEvente){//鼠標退出組件方法(鼠標離開某個區(qū)域后)

jButton.setForeground(newColor(250,0,0));

}

publicvoidmousePressed(MouseEvente){//鼠標按鍵按下后

jButton.setForeground(newColor(0,250,0));

}

publicvoidmouseReleased(MouseEvente){//被按住的鼠標按鍵釋放后

jButton.setForeground(newColor(250,250,0));

}

}

);

}

returnjButton;

}

privateJButtongetJButton1(){//注冊按鈕

if(jButton1==null){

jButton1=newJButton();//實例化一個對象,給按鈕添中符合.

jButton1.setText("/");

jButton1.setFont(newFont("楷體",Font.BOLD,30));

jButton1.setForeground(newColor(0,150,100));

jButton1.addActionListener(newActionListener(){//給jButton1添加一個事件偵聽器newActionListener(),當jButton被按下的時候,所需要發(fā)生的事情定義在newActionListener()里

publicvoidactionPerformed(ActionEvente){

str=jTextField.getText();

Operator='/';

dataone=Double.parseDouble(str);//表示將轉(zhuǎn)換好的Double類型的數(shù)值賦值給dataone類

str="";

jTextField.setText(str);

}

});

}

returnjButton1;

}

privateJButtongetJButton2(){

if(jButton2==null){

jButton2=newJButton("sqrt");//開根號運算,定義jButton2=new

JButton("sqrt");對其設(shè)置監(jiān)控,調(diào)用Math.sqrt()方法來實現(xiàn)開根號運算,并在文本框中輸出結(jié)果jButton2.setFont(newFont("楷體",Font.BOLD,30));//Font字體的意思,楷體,加粗,字體號大小30

jButton2.setForeground(newColor(0,0,200));

jButton2.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

doublea=Double.parseDouble(jTextField.getText());//表示將轉(zhuǎn)換好的Double類型的數(shù)值賦值給double類型的變量。

doubleb;

if(a<0){

jTextField.setText("負數(shù)不能開平方");

}

else{

b=Math.sqrt(a);

jTextField.setText(Double.toString(b));//Double.toString(next())將這個數(shù)double

數(shù)轉(zhuǎn)化成String類型(字符串)

}

}

});

}

returnjButton2;

}

privateJButtongetJButton3(){

if(jButton3==null){

jButton3=newJButton();

jButton3.setText("4");

jButton3.setFont(newFont("楷體",Font.BOLD,30));

jButton3.setForeground(newColor(250,0,0));

jButton3.setFocusable(false);

jButton3.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

str+="4";

jTextField.setText(str);

}

});

jButton3.addMouseListener(newMouseListener(){

publicvoidactionPerformed(MouseEvente){

jButton3.setForeground(newColor(0,100,0));

}

publicvoidmouseClicked(MouseEvente){

jButton3.setForeground(newColor(0,150,100));

}

publicvoidmouseEntered(MouseEvente){

jButton3.setForeground(newColor(0,0,250));

}

publicvoidmouseExited(MouseEvente){

jButton3.setForeground(newColor(250,0,0));

}

publicvoidmousePressed(MouseEvente){

jButton3.setForeground(newColor(0,250,0));

}

publicvoidmouseReleased(MouseEvente){

jButton3.setForeground(newColor(250,250,0));

}

}

);

}

returnjButton3;

}

privateJButtongetJButton4(){

if(jButton4==null){

jButton4=newJButton();

jButton4.setText("5");

jButton4.setFont(newFont("楷體",Font.BOLD,30));

jButton4.setForeground(newColor(250,0,0));

jButton4.setFocusable(false);

jButton4.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

str+="5";

jTextField.setText(str);

}

});

jButton4.addMouseListener(newMouseListener(){

publicvoidactionPerformed(MouseEvente){

jButton4.setForeground(newColor(0,100,0));

}

publicvoidmouseClicked(MouseEvente){

jButton4.setForeground(newColor(0,150,100));

}

publicvoidmouseEntered(MouseEvente){

jButton4.setForeground(newColor(0,0,250));

}

publicvoidmouseExited(MouseEvente){

jButton4.setForeground(newColor(250,0,0));

}

publicvoidmousePressed(MouseEvente){

jButton4.setForeground(newColor(0,250,0));

}

publicvoidmouseReleased(MouseEvente){

jButton4.setForeground(newColor(250,250,0));

}

}

);

}

returnjButton4;

}

privateJButtongetJButton5(){

if(jButton5==null){

jButton5=newJButton();

jButton5.setText("6");

jButton5.setFont(newFont("楷體",Font.BOLD,30));

jButton5.setForeground(newColor(250,0,0));

jButton5.setFocusable(false);

jButton5.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

str+="6";

jTextField.setText(str);

}

});

jButton5.addMouseListener(newMouseListener(){

publicvoidactionPerformed(MouseEvente){

jButton5.setForeground(newColor(0,100,0));

}

publicvoidmouseClicked(MouseEvente){

jButton5.setForeground(newColor(0,150,100));

}

publicvoidmouseEntered(MouseEvente){

jButton5.setForeground(newColor(0,0,250));

}

publicvoidmouseExited(MouseEvente){

jButton5.setForeground(newColor(250,0,0));

}

publicvoidmousePressed(MouseEvente){

jButton5.setForeground(newColor(0,250,0));

}

publicvoidmouseReleased(MouseEvente){

jButton5.setForeground(newColor(250,250,0));

}

}

);

}

returnjButton5;

}

privateJButtongetJButton6(){

if(jButton6==null){

jButton6=newJButton();

jButton6.setText("*");

jButton6.setFont(newFont("楷體",Font.BOLD,30));

jButton6.setForeground(newColor(0,150,100));

jButton6.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

str=jTextField.getText();

Operator='*';

dataone=Double.parseDouble(str);

str="";

jTextField.setText(str);

}

});

}

returnjButton6;

}

privateJButtongetJButton7(){

if(jButton7==null){

jButton7=newJButton("%");//設(shè)置百分比按鈕,jButton7=newJButton("%");使用變量i1來存放從文本框中讀出的數(shù)據(jù)并轉(zhuǎn)換成double類型,定義double類型變量z1,z1=i1/100實現(xiàn)求百分比運算,在使用jTextField.setText(Double.toString(z1))使其在文本框中輸出結(jié)果jButton7.setFont(newFont("楷體",Font.BOLD,30));

jButton7.setForeground(newColor(0,0,200));

jButton7.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

doublei1=Double.parseDouble(jTextField.getText());

doublez1=i1/100;

jTextField.setText(Double.toString(z1));

}

});

}

returnjButton7;

}

privateJButtongetJButton8(){

if(jButton8==null){

jButton8=newJButton();

jButton8.setText("1");

jButton8.setFont(newFont("楷體",Font.BOLD,30));

jButton8.setForeground(newColor(250,0,0));

jButton8.setFocusable(false);

jButton8.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

str+="1";

jTextField.setText(str);

}

});

jButton8.addMouseListener(newMouseListener(){

publicvoidactionPerformed(MouseEvente){

jButton8.setForeground(newColor(0,100,0));

}

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論