




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、一、目標:通過Java程序開發實訓使學生掌握面向對象程序設計(Java)課堂講授的內容,靈活運用到Java程序的開發與設計中。二、要求:按時參加Java程序開發實訓訓練,不得遲到和早退;獨立完成程序設計;按要求撰寫實踐報告。三、詳細內容:使用面向對象程序設計(Java)課程講授內容,編寫一個簡單的計算器,要求實現如下功能:1. 進行圖形界面設計 通過圖形界面設計,掌握Frame類、Panel類、5種布局管理器、文本框、標簽及按鈕的使用方法。2. 實現計算器的基本功能包括加減乘除四則運算、清除結果等功能。3. 實現計算器的存儲計算功能包括清空、使用清零、退格。和基本運算4類的屬性及所用到的方法布
2、局布局: 整個界面(Frame)采用BorderLayout布局 P1組件添加到Frame的南部 P1采用默認的流式布局添加文本框P2組件添加到Frame的中部P2采用網格布局四行五列放各種按鈕用到的類: mycal KeyAdapter WindowAdapterMyCal類:mycal類的屬性:b;按鈕數組保存各種按鍵 以后放到Panel2中tf;文本匡顯示輸入及運算結果num1,num2,jieguo運算數char c,ch;運算符號,ch為輸入的運算符號,c保存ch輸入的“+-*/”Panel p1,p2;/兩個組件p1放文本匡p2放按鈕P2的布局為網格布局5行4列 mycal類的方法
3、:1 構造方法:設置標題;設置文本框;文本框中添加匿名內置類(KeyAdapter)實現鍵盤的輸入和運算;將各種組件添加到容器,設置各種按鍵的顏色 ;添加WindowListenr監聽器設置關閉按鈕; 2Main方法: 新建一個mycal類;4. actionPerformed 方法: 設置按鈕的輸入和運算,當按下運算數將其顯示在文本匡中如果之前清零則將零去除當按下運算符將其保存在c中并將文本匡內容清空當按下等號判斷字符c的符號進行相應的運算并將結果顯示在文本框中。當按下清空按鈕將文本框清空,當按下退格按鈕取文本框中字符串的字串刪除一個符號。KeyAdapter類:KeyAdapter類的屬性
4、:mycal類中的屬性KeyAdapter類的方法: keyPressed()方法 當鍵盤按下時, 判斷鍵盤的輸入當為“+-*/”時記錄下num1及c;當為”=”或“Enter”時記錄下num2并將結果計算出來keyReleased()方法當鍵盤松開時,如果是按下“+-*/”后松開將文本框清空如果是按下“=”或“Enter”后松開將計算結果顯示在文本框中WindowAdapter類:WindowAdapter類的屬性:WindowEvent eWindowAdapter類的方法:windowClosing();設置關閉按鈕、四、源代碼 /*類mycal繼承Frame實現了ActionListe
5、ner接口;往容器中添加兩個組件Panel1,Panel2;Panel中放置文本匡,Panel2中放置各種按鍵;文本匡中以匿名內置類的方式添加鍵盤監聽器實現鍵盤的輸入及運算;為Panel2中各種按鍵添加動作監聽器實現按鍵的輸入及運算;*/import java.awt.*;import java.awt.event.*;class mycal extends Frame implements ActionListener private Button b; private TextField tf; private double num1,num2,jieguo;/運算數 private ch
6、ar c,ch;/運算符 Panel p1,p2;/兩個組件 public mycal() setTitle(My Calculator 1.0); p1=new Panel(); tf=new TextField(25); tf.addKeyListener(new KeyAdapter() /添加鍵盤監聽器現鍵盤的輸入及運算 public void keyPressed(KeyEvent e) char ch=e.getKeyChar(); if(+-*/.indexOf(ch)!=-1) num1=Double.parseDouble(tf.getText(); c=ch; if(ch=
7、|ch=e.VK_ENTER) num2=Double.parseDouble(tf.getText(); switch(c) case +: jieguo=num1+num2; break; case -: jieguo=num1-num2; break; case *: jieguo=num1*num2; break; case /: jieguo=num1/num2; break; public void keyReleased(KeyEvent e) char ch=e.getKeyChar(); if(+-*/.indexOf(ch)!=-1) tf.setText(null); i
8、f(ch=|e.getKeyCode()=e.VK_ENTER) tf.setText(Double.toString(jieguo); ); p1.add(tf); add(p1,North); p2=new Panel(); p2.setLayout(new GridLayout(5,4,10,8); b=new Button21; for(int i=1;i21;i+) bi=new Button(); bi.setFont(new Font(仿宋,0,16); String str1=/789*456-123+0; b1.setLabel(退格); b2.setLabel(清空); b
9、3.setLabel(清零); for(int i=4;i=17;i+) bi.setLabel(str1.charAt(i-4)+); b18.setLabel(+/-); b19.setLabel(.); b20.setLabel(=); for(int i=1;i21;i+) p2.add(bi); bi.addActionListener(this); bi.setBackground(new Color(20,130,180); bi.setForeground(Color.yellow); for(int i=1;i4;i+) bi.setBackground(new Color(
10、120,180,170); bi.setForeground(Color.blue); for(int i=1;i=4;i+) bi*4.setBackground(new Color(120,180,170); bi*4.setForeground(Color.red); b20.setBackground(Color.red); add(p2); /Dimension di=this.getPreferredSize(); /System.out.println(di.width+,+di.height); setBounds(100,200,230,300); setVisible(tr
11、ue); addWindowListener(new WindowAdapter()/設置關閉按鈕 public void windowClosing(WindowEvent e) e.getWindow().setVisible(false); e.getWindow().dispose(); System.exit(0); ); public static void main(String args) new mycal(); public void actionPerformed(ActionEvent e)/ 為Panel2中各種按鍵添加動作監聽器實現按鍵的輸入及運算; String
12、str=e.getActionCommand().trim(); if(.indexOf(str)!=-1) if(tf.getText().equals(0)tf.setText(null); tf.setText(tf.getText()+str); return; if(+-*/.indexOf(str)!=-1) num1=Double.parseDouble(tf.getText(); c=str.charAt(0); tf.setText(null); return; else if(str.equals(=) num2=Double.parseDouble(tf.getText(
13、); switch(c) case +: jieguo=num1+num2; break; case -: jieguo=num1-num2; break; case *: jieguo=num1*num2; break; case /: jieguo=num1/num2; break; tf.setText(Double.toString(jieguo); else if(str.equals(+/-) if(tf.getText().isEmpty()=false) Double lnum=-(Double.parseDouble(tf.getText(); tf.setText(Double.toString(lnum); else tf.setText(-); else if(str.equals(清空) tf.setText(null); else if(str.equals(清零) tf.setText(0); els
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年注會考試中的知識點整合與早期規劃的必要性探討試題及答案
- 電聲器件在智能語音助手平板中的應用考核試卷
- 2025年注會考生反饋試題及答案
- 糧食大豆生產方案范本
- 2025年會計核算方法試題及答案
- 財務報表分析技巧試題及答案2025
- 2024年行政管理師考前準備試題及答案
- 項目管理財務知識考題試題及答案
- 項目管理主動溝通試題及答案
- 石棉水泥制品國際貿易實務考核試卷
- 美容師考試相關法律法規的知識要點試題及答案
- 2025年形勢與政策-加快建設社會主義文化強國+第二講中國經濟行穩致遠
- 激光雷達筆試試題及答案
- 2024年出版專業資格考試《基礎知識》(中級)真題及答案
- 中國加速康復外科臨床實踐指南2021
- 急診醫學知到智慧樹章節測試課后答案2024年秋云南中醫藥大學
- 2024-2030年中國建筑減隔震行業發展全面調研與未來趨勢分析報告
- 2025廣西柳鋼集團招聘易考易錯模擬試題(共500題)試卷后附參考答案
- 課件:《科學社會主義概論(第二版)》第五章
- 2025年河南測繪職業學院高職單招職業技能測試近5年常考版參考題庫含答案解析
- 2025-2030年中國抗哮喘市場現狀調研及投資發展潛力分析報告
評論
0/150
提交評論