<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
摘要:手把手教你使用 Java AWT 建立一個簡易計算器。
AWT (抽象視窗工具包)是一個有助於構建 GUI 的 API (圖形化使用者介面)基於 java 應用程式。GUI使用一些圖形幫助使用者互動。它主要由一組的類和方法所必需的,如在一個簡化的方式建立和管理的GUI按鈕,視窗,框架,文字方塊,無線電鈕 等等
我所提供的Java程式碼對於動作監聽器介面用於事件處理的計算器。
if(e.getSource()==b1){ //b1 代表數位 1 zt=l1.getText(); z=zt+"1";// 1 將合併在前一個值的末尾 l1.setText(z); }
當按下任何數位按鈕時,標籤 l1 中的任何值都將儲存在變數 zt 中,然後與相應的數位連線,然後顯示在標籤 l1 中,對於 NEGATIVE 和 DECIMAL PTS 按鈕,我們也做了類似的處理
if(e.getSource()==badd){ //對應加法 num1=Double.parseDouble(l1.getText()); z=""; l1.setText(z); check=1; }
現在,我們將標籤 l1 的值轉換為 double
型別後,將其儲存到變數 num1
中,這在技術上將是第一個數位,然後將標籤 l1 設定為 null
我們將只使用一個檢查變數來獲取這個特定的氣動按鈕(這裡是 +)被點選,這樣我們就可以在我們的 = 按鈕中執行這個操作
if(e.getSource()==bcalc){ num2=Double.parseDouble(l1.getText()); if(check==1) xd =num1+num2; if(check==2) xd =num1-num2; if(check==3) xd =num1*num2; if(check==4) xd =num1/num2; if(check==5) xd =num1%num2; l1.setText(String.valueOf(xd)); }
現在再次將值儲存 l1到 num2變數中,這將是算術上的第二個數位,然後檢查變數的值,check然後進行相應的操作,然後在標籤中顯示結果 l1
if(e.getSource()==bclr){ num1=0; num2=0; check=0; xd=0; z=""; l1.setText(z); }
此處將我們使用的所有變數更新為其預設值 0
並將標籤 l1 設定為 null,以便我們之後可以開始新的計算
if(e.getSource()==bback){ zt=l1.getText(); try{ z=zt.substring(0, zt.length()-1); }catch(StringIndexOutOfBoundsException f){return;} l1.setText(z); }
這裡只是l1通過使用substring函數刪除最後一位數位來更新值
並處理了一個 StringIndexOutOfBoundsException
當我們在標籤中的值為 null 並且仍然按下返回按鈕時發生的異常
我所做的只是處理了 EQUAL 和所有 ARITHMETIC Buttons
中的一個異常,並根據情況列印了所需的訊息
算術按鈕:
try{ num1=Double.parseDouble(l1.getText()); }catch(NumberFormatException f){ l1.setText("Invalid Format"); return; }
等於按鈕:
try{ num2=Double.parseDouble(l1.getText()); }catch(Exception f){ l1.setText("ENTER NUMBER FIRST "); return; }
當我們將值轉換為雙精度值時,但可以說,標籤 l1 具有空值(即標籤為空)並且我們仍然按下這些按鈕,然後它將生成 NumberFormatException execption
,所以處理並列印所需的訊息。
如果我點選1然後+然後我點選-而不是其他一些數位按鈕,因此這是一個無效的格式,並且當-當時被點選時標籤為空因此生成了execption所以只是處理它並在標籤中列印無效格式
類似地,當標籤為空時,並且在這種情況下單擊= ENTER NUMBER FIRST
將顯示在標籤內
至此,我們結束了本次 Java AWT 教學。
import java.awt.*; import java.awt.event.*; class MyCalc extends WindowAdapter implements ActionListener{ Frame f; Label l1; Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b0; Button badd,bsub,bmult,bdiv,bmod,bcalc,bclr,bpts,bneg,bback; double xd; double num1,num2,check; MyCalc(){ f= new Frame("MY CALCULATOR"); // 範例化元件 l1=new Label(); l1.setBackground(Color.LIGHT_GRAY); l1.setBounds(50,50,260,60); b1=new Button("1"); b1.setBounds(50,340,50,50); b2=new Button("2"); b2.setBounds(120,340,50,50); b3=new Button("3"); b3.setBounds(190,340,50,50); b4=new Button("4"); b4.setBounds(50,270,50,50); b5=new Button("5"); b5.setBounds(120,270,50,50); b6=new Button("6"); b6.setBounds(190,270,50,50); b7=new Button("7"); b7.setBounds(50,200,50,50); b8=new Button("8"); b8.setBounds(120,200,50,50); b9=new Button("9"); b9.setBounds(190,200,50,50); b0=new Button("0"); b0.setBounds(120,410,50,50); bneg=new Button("+/-"); bneg.setBounds(50,410,50,50); bpts=new Button("."); bpts.setBounds(190,410,50,50); bback=new Button("back"); bback.setBounds(120,130,50,50); badd=new Button("+"); badd.setBounds(260,340,50,50); bsub=new Button("-"); bsub.setBounds(260,270,50,50); bmult=new Button("*"); bmult.setBounds(260,200,50,50); bdiv=new Button("/"); bdiv.setBounds(260,130,50,50); bmod=new Button("%"); bmod.setBounds(190,130,50,50); bcalc=new Button("="); bcalc.setBounds(245,410,65,50); bclr=new Button("CE"); bclr.setBounds(50,130,65,50); b1.addActionListener(this); b2.addActionListener(this); b3.addActionListener(this); b4.addActionListener(this); b5.addActionListener(this); b6.addActionListener(this); b7.addActionListener(this); b8.addActionListener(this); b9.addActionListener(this); b0.addActionListener(this); bpts.addActionListener(this); bneg.addActionListener(this); bback.addActionListener(this); badd.addActionListener(this); bsub.addActionListener(this); bmult.addActionListener(this); bdiv.addActionListener(this); bmod.addActionListener(this); bcalc.addActionListener(this); bclr.addActionListener(this); f.addWindowListener(this); //新增到框架 f.add(l1); f.add(b1); f.add(b2); f.add(b3); f.add(b4); f.add(b5);f.add(b6); f.add(b7); f.add(b8);f.add(b9);f.add(b0); f.add(badd); f.add(bsub); f.add(bmod); f.add(bmult); f.add(bdiv); f.add(bmod);f.add(bcalc); f.add(bclr); f.add(bpts);f.add(bneg); f.add(bback); f.setSize(360,500); f.setLayout(null); f.setVisible(true); } //關閉視窗 public void windowClosing(WindowEvent e) { f.dispose(); } public void actionPerformed(ActionEvent e){ String z,zt; //數位按鈕 if(e.getSource()==b1){ zt=l1.getText(); z=zt+"1"; l1.setText(z); } if(e.getSource()==b2){ zt=l1.getText(); z=zt+"2"; l1.setText(z); } if(e.getSource()==b3){ zt=l1.getText(); z=zt+"3"; l1.setText(z); } if(e.getSource()==b4){ zt=l1.getText(); z=zt+"4"; l1.setText(z); } if(e.getSource()==b5){ zt=l1.getText(); z=zt+"5"; l1.setText(z); } if(e.getSource()==b6){ zt=l1.getText(); z=zt+"6"; l1.setText(z); } if(e.getSource()==b7){ zt=l1.getText(); z=zt+"7"; l1.setText(z); } if(e.getSource()==b8){ zt=l1.getText(); z=zt+"8"; l1.setText(z); } if(e.getSource()==b9){ zt=l1.getText(); z=zt+"9"; l1.setText(z); } if(e.getSource()==b0){ zt=l1.getText(); z=zt+"0"; l1.setText(z); } if(e.getSource()==bpts){ //新增小數點 zt=l1.getText(); z=zt+"."; l1.setText(z); } if(e.getSource()==bneg){ //對於減 zt=l1.getText(); z="-"+zt; l1.setText(z); } if(e.getSource()==bback){ // 退格用 zt=l1.getText(); try{ z=zt.substring(0, zt.length()-1); }catch(StringIndexOutOfBoundsException f){return;} l1.setText(z); } //算術按鈕 if(e.getSource()==badd){ //對應加法 try{ num1=Double.parseDouble(l1.getText()); }catch(NumberFormatException f){ l1.setText("Invalid Format"); return; } z=""; l1.setText(z); check=1; } if(e.getSource()==bsub){ //對應減法 try{ num1=Double.parseDouble(l1.getText()); }catch(NumberFormatException f){ l1.setText("Invalid Format"); return; } z=""; l1.setText(z); check=2; } if(e.getSource()==bmult){ //對應乘法 try{ num1=Double.parseDouble(l1.getText()); }catch(NumberFormatException f){ l1.setText("Invalid Format"); return; } z=""; l1.setText(z); check=3; } if(e.getSource()==bdiv){ //對應除法 try{ num1=Double.parseDouble(l1.getText()); }catch(NumberFormatException f){ l1.setText("Invalid Format"); return; } z=""; l1.setText(z); check=4; } if(e.getSource()==bmod){ //對應MOD/剩餘 try{ num1=Double.parseDouble(l1.getText()); }catch(NumberFormatException f){ l1.setText("Invalid Format"); return; } z=""; l1.setText(z); check=5; } //結果按鈕 if(e.getSource()==bcalc){ try{ num2=Double.parseDouble(l1.getText()); }catch(Exception f){ l1.setText("ENTER NUMBER FIRST "); return; } if(check==1) xd =num1+num2; if(check==2) xd =num1-num2; if(check==3) xd =num1*num2; if(check==4) xd =num1/num2; if(check==5) xd =num1%num2; l1.setText(String.valueOf(xd)); } //清除標籤和記憶體 if(e.getSource()==bclr){ num1=0; num2=0; check=0; xd=0; z=""; l1.setText(z); } } //範例化 MyCalc 物件的 main 方法 public static void main(String args[]){ new MyCalc(); } }
到此這篇關於如何利用Java AWT 建立一個簡易計算器的文章就介紹到這了,更多相關Java AWT 建立計算器內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45