java圖形界面AWT編寫計(jì)算器
一、前言
1)、這個(gè)計(jì)算器是基于java語言下圖形界面AWT編寫的。其實(shí)我認(rèn)為寫這個(gè)計(jì)算器,實(shí)現(xiàn)什么功能不重要,市場也不缺這個(gè)計(jì)算器,而是在于對AWT中三大布局的及畫板的使用簡單控件的操作使用。通過聯(lián)系熟悉掌握AWT基礎(chǔ)為深入學(xué)習(xí)打下基礎(chǔ)。這個(gè)計(jì)算器功能也十分簡單,空有其表。不過有興趣的話可以繼續(xù)添加功能完善操作等。
2)、使用平臺:主要使用Myeclipse2014
3)、主要知識點(diǎn):java 基礎(chǔ); awt+swing
二、功能實(shí)現(xiàn)及代碼展示
1)、主要是layout布局的練習(xí),對畫板文本框的使用,以及控件button的事件的注冊與監(jiān)聽。因?yàn)楣δ芤埠芎唵?,所以代碼就簡寫到同一個(gè)類里了。實(shí)現(xiàn)了基本的四則運(yùn)算。
2)、代碼如下:
import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.Color; public class JiSuanJi { private JFrame frame; //聲明相關(guān)布局面板 private JPanel panelwest; private JPanel panelcenter; private JPanel paneleast; private TextField tf; private JButton buttonzero; //聲明按鈕控件 private JButton buttondot; private JButton buttonequal; private JButton buttonplus,buttonminus,buttonmultiple,buttondevision,buttonsin,buttontozero; private JButton buttonone,buttontwo,buttonthree,buttonfour,buttonfive,buttonsix,buttonseven,buttoneight,buttonnine; private ButtonListener listener; //聲明監(jiān)聽事件 public static void main(String args[]){ new JiSuanJi(); } public JiSuanJi(){ initView(); //實(shí)例化相關(guān)對象 setCenter(); //布局添加控件及相關(guān)控件處理 setWest(); setEast(); addListener(); //設(shè)置監(jiān)聽 setFrame(); //對 frame設(shè)置布局及顯示處理 } class ButtonListener implements ActionListener{ int biaozhi=0; //初始化相關(guān)變量 double flag1=0,flag2=0,flag3=0; //@Override public void actionPerformed(ActionEvent e){ //(1)通過 e.getSource(),獲取點(diǎn)擊事件的按鈕來源,作出相應(yīng)處理 if(e.getSource()==buttondot){ tf.setText("0."); } if(e.getSource()==buttontozero){ tf.setText(""); } if(e.getSource()==buttonzero){ tf.setText(tf.getText()+"0"); flag1=Double.parseDouble(tf.getText()); } else if(e.getSource()==buttonone){ tf.setText(tf.getText()+"1");//文本框顯示1、2、3.。。 flag1=Double.parseDouble(tf.getText()); } else if(e.getSource()==buttontwo){ tf.setText(tf.getText()+"2"); flag1=Double.parseDouble(tf.getText()); } else if(e.getSource()==buttonthree){ tf.setText(tf.getText()+"3"); flag1=Double.parseDouble(tf.getText()); } else if(e.getSource()==buttonfour){ tf.setText(tf.getText()+"4"); flag1=Double.parseDouble(tf.getText()); } else if(e.getSource()==buttonfive){ tf.setText(tf.getText()+"5"); flag1=Double.parseDouble(tf.getText()); } else if(e.getSource()==buttonsix){ tf.setText(tf.getText()+"6"); flag1=Double.parseDouble(tf.getText()); } else if(e.getSource()==buttonseven){ tf.setText(tf.getText()+"7"); flag1=Double.parseDouble(tf.getText()); } else if(e.getSource()==buttoneight){ tf.setText(tf.getText()+"8"); flag1=Double.parseDouble(tf.getText()); } else if(e.getSource()==buttonnine){ tf.setText(tf.getText()+"9"); flag1=Double.parseDouble(tf.getText()); } if(e.getSource()==buttonplus){ tf.setText(""); flag2=flag1; biaozhi=0; } if(e.getSource()==buttonminus){ tf.setText(""); flag2=flag1; biaozhi=1; } if(e.getSource()==buttonmultiple){ tf.setText(""); flag2=flag1; biaozhi=2; } if(e.getSource()==buttondevision){ tf.setText(""); flag2=flag1; biaozhi=3; } if(e.getSource()==buttonsin){ flag3=Math.sin(flag1); tf.setText(flag3+""); } if(e.getSource()==buttonequal){ if(biaozhi==0){ flag3=flag2+flag1; } if(biaozhi==1){ flag3=flag2-flag1; } if(biaozhi==2){ flag3=flag2*flag1; } if(biaozhi==3){ flag3=flag2/flag1; } tf.setText(flag3+""); } } } private void initView(){ /** * 創(chuàng)建框架、小容器對象、按鈕對象 */ tf = new TextField(30);//初始化界面寬度 frame = new JFrame("簡易計(jì)算機(jī)"); panelcenter = new JPanel(); panelwest = new JPanel(); paneleast = new JPanel(); listener = new ButtonListener(); //實(shí)例化監(jiān)聽對象 } private void setCenter(){ //(1)初始化控件顯示值 buttonone=new JButton("1"); buttontwo=new JButton("2"); buttonthree=new JButton("3"); buttonfour=new JButton("4"); buttonfive=new JButton("5"); buttonsix=new JButton("6"); buttonseven=new JButton("7"); buttoneight=new JButton("8"); buttonnine=new JButton("9"); //(2)設(shè)置布局樣式 panelcenter.setLayout(new GridLayout(3,3));//根據(jù)內(nèi)容多少來布局 //(3)中央布局添加控件按鈕 panelcenter.add(buttonone); panelcenter.add(buttontwo); panelcenter.add(buttonthree); panelcenter.add(buttonfour); panelcenter.add(buttonfive); panelcenter.add(buttonsix); panelcenter.add(buttonseven); panelcenter.add(buttoneight); panelcenter.add(buttonnine); } private void setEast(){ //(1)設(shè)置控件顯示符號 buttonplus=new JButton("+"); buttonminus=new JButton("-"); buttonmultiple=new JButton("*"); buttondevision=new JButton("/"); buttonsin=new JButton("sin"); buttontozero=new JButton("清除"); //(2)設(shè)置布局樣式 paneleast.setLayout(new GridLayout(3,2)); //(3)右布局添加相應(yīng)按鈕控件 paneleast.add(buttonplus); paneleast.add(buttonminus); paneleast.add(buttonmultiple); paneleast.add(buttondevision); paneleast.add(buttonsin); paneleast.add(buttontozero); } private void setWest(){ //(1)初始化控件顯示值 buttonzero=new JButton("0"); buttondot=new JButton("."); buttonequal = new JButton("="); //(2)對這三個(gè)按鈕設(shè)置布局 panelwest.setLayout(new GridLayout(3,1)); //(3)左邊布局添加按鈕控件,將三個(gè)按鈕添加入布局 panelwest.add(buttonzero); panelwest.add(buttondot); panelwest.add(buttonequal); } private void addListener(){ //(1)對 1-9對應(yīng)的按鈕添加監(jiān)聽 buttonone.addActionListener(listener); buttontwo.addActionListener(listener); buttonthree.addActionListener(listener); buttonfour.addActionListener(listener); buttonfive.addActionListener(listener); buttonsix.addActionListener(listener); buttonseven.addActionListener(listener); buttoneight.addActionListener(listener); buttonnine.addActionListener(listener); //(2)對運(yùn)算符對應(yīng)的按鈕添加監(jiān)聽 buttonplus.addActionListener(listener); buttonminus.addActionListener(listener); buttonmultiple.addActionListener(listener); buttondevision.addActionListener(listener); buttonsin.addActionListener(listener); buttontozero.addActionListener(listener); //(3)對其與的符號對應(yīng)的按鈕監(jiān)聽 buttonzero.addActionListener(listener); buttondot.addActionListener(listener); buttonequal.addActionListener(listener); } private void setFrame(){ frame.setLayout(new BorderLayout()); //將準(zhǔn)備的不同方位的內(nèi)容加入大框架 frame.add(paneleast,"East"); frame.add(tf,BorderLayout.NORTH); frame.add(panelwest,BorderLayout.WEST); frame.add(panelcenter,BorderLayout.CENTER); //設(shè)置顏色 tf.setBackground(Color.green); frame.pack(); //將框架展開 frame.setLocation(500,500); //程序框架在屏幕的位置 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //退出進(jìn)程,不加此句,關(guān)閉頁面但程序進(jìn)程仍在后臺運(yùn)行 frame.setVisible(true); //一個(gè)圖形界面默認(rèn)都是不可見的,setVisible是把圖形界面設(shè)置為可見 } }
代碼測試可用。
三、演示與效果
1)、運(yùn)行界面如下:
當(dāng)然了圖形界面大小位置可調(diào),也可初始化其位置與大小。
2)、簡單測試四則運(yùn)算:11*12
好像簡單的不能再簡單了。這個(gè)計(jì)算器寫下來重點(diǎn)是布局的聯(lián)系與button的簡單使用。
關(guān)于計(jì)算器的精彩文章請查看《計(jì)算器專題》 ,更多精彩等你來發(fā)現(xiàn)!
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java中的Random()函數(shù)及兩種構(gòu)造方法
Java中存在著兩種Random函數(shù)分別是java.lang.Math.Random和java.util.Random,文中給大家介紹了random()的兩種構(gòu)造方法,感興趣的朋友跟隨小編一起看看吧2018-11-11Spring MVC攔截器_動力節(jié)點(diǎn)Java學(xué)院整理
Spring MVC的攔截器,是屬于HandlerMapping級別的,可以有多個(gè)HandlerMapping ,每個(gè)HandlerMapping可以有自己的攔截器,具體內(nèi)容詳情大家通過本文學(xué)習(xí)吧2017-08-08基于JavaSwing設(shè)計(jì)和實(shí)現(xiàn)的酒店管理系統(tǒng)
這篇文章主要介紹了基于JavaSwing+mysql的酒店管理系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn),它可以實(shí)現(xiàn)酒店日常的管理功能包括開房、退房、房間信息、顧客信息管理等2021-08-08springboot集成flyway自動創(chuàng)表的詳細(xì)配置
Flayway是一款數(shù)據(jù)庫版本控制管理工具,支持?jǐn)?shù)據(jù)庫版本自動升級,Migrations可以寫成sql腳本,也可以寫在java代碼里;本文通過實(shí)例代碼給大家介紹springboot集成flyway自動創(chuàng)表的詳細(xì)過程,感興趣的朋友一起看看吧2021-06-06MyBatisPlus中批量插入之如何通過開啟rewriteBatchedStatements=true
這篇文章主要介紹了MyBatisPlus中批量插入之如何通過開啟rewriteBatchedStatements=true問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03