日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

java gui實現(xiàn)計算器小程序

瀏覽:31日期:2022-08-09 08:07:46

本文實例為大家分享了java gui實現(xiàn)計算器小程序的具體代碼,供大家參考,具體內(nèi)容如下

廢話不多說 , 直接貼代碼 , 有詳細(xì)的注釋 , 我也是剛學(xué)GUI沒多久

這個是效果圖 :

java gui實現(xiàn)計算器小程序

代碼:

package gui; /** * 導(dǎo)入所需要的包 **/import java.awt.*; // 這個是java的gui編程里面一個很重要的包import java.awt.event.*; // 用來處理事件所需要import java.util.Stack;// 棧 , 我用來處理運(yùn)算的 public class Calculator extends Frame implements ActionListener{ /** * 先聲明一個公共類叫Calculator , 繼承自Frame類 , 實現(xiàn)ActionListener接口功能 **/ private static final long serialVersionUID = 1L; // 這個是用來控制版本的序列化 int frame_width = 1000,frame_height = 400; //設(shè)置整個框架的長寬 Panel panel_textfield,panel_number,panel_op,panel_other; // 整個計算器布局我把它分成兩個面板 , 一個是上面的輸入框區(qū) , 一個是下面的按鈕區(qū) , 然后按鈕區(qū)又分成了左邊和右邊兩個區(qū) , 所以有三個panel Button [] number_buttons; // 聲明數(shù)字按鈕(也就是上面說的左邊區(qū)) Button [] op_buttons; // 聲明操作符按鈕(也就是上面說的右邊區(qū)) TextField textfield;// 輸入框 public Calculator() { super('計算器'); // 完成實例域參數(shù)的初始化,調(diào)用構(gòu)造器的語句只能作為另一個構(gòu)造器(通常指的是子類構(gòu)造器)的第一條語句出現(xiàn) init(); // 自己寫的初始化方法 setLayout(); // 設(shè)置布局管理方式 setBackground(); // 設(shè)置背景 setBounds(); // 設(shè)置位置 setFonts(); // 設(shè)置字體 addButtons(); // 添加按鈕 textfield.setEditable(false); // 設(shè)置輸入框為不可手動編輯 , 只能通過按鈕輸入 */ addWindowListener // 添加一個窗口監(jiān)聽器,便于按下關(guān)閉按鈕時能關(guān)閉窗口 , 否則只能在ide里面停止調(diào)試來關(guān)閉程序( new WindowAdapter() {public void windowClosing(WindowEvent e) { System.exit(0);} }); setVisible(true); // 設(shè)置框架為可見,不然畫了框你也看不見...一定要放在最后面,放在前面的話,后面對窗體有改動得縮放拉伸一下窗體進(jìn)行窗體重繪才能出現(xiàn)效果 , 我在這里卡了很久.... } public void init() {panel_textfield = new Panel(); // 實例化一個panel panel_number = new Panel(); // 實例化一個panel panel_op = new Panel();// 實例化一個panel panel_other = new Panel(); // 實例化一個panel textfield = new TextField(frame_width);// 實例化一個文本輸入框 setResizable(false); // 設(shè)置整個窗體為不可縮放拉伸 add(panel_textfield); // 往窗體中添加輸入框面板 add(panel_other); // 往窗體中添加按鈕面板 panel_textfield.add(textfield); // 在輸入框面板中添加輸入框 panel_other.add(panel_number);// 在下面面板中添加數(shù)字按鈕面板 panel_other.add(panel_op); // 在下面面板中添加操作符按鈕面板 } public void setLayout() { setLayout(new GridLayout(2,1,4,4)); // 設(shè)置窗體布局方式為網(wǎng)格布局,2*1的網(wǎng)格,網(wǎng)格之間間距為4個像素 panel_textfield.setLayout(null); // 輸入框面板就一個組件,所以設(shè)置null panel_other.setLayout(new GridLayout(1,2,4,4)); // 下面面板因為分成左邊的數(shù)字區(qū)和右邊的操作符區(qū),所以設(shè)置1*2的網(wǎng)格布局方式,間距4個像素 panel_number.setLayout(new GridLayout(5,3,4,4)); // 數(shù)字區(qū)布局設(shè)置為5*3的網(wǎng)格布局 panel_op.setLayout(new GridLayout(3,1,4,4)); // 操作符區(qū)設(shè)置為3*1的網(wǎng)格布局方式 } public void setBackground() { // 設(shè)置背景,沒什么好說的.... panel_textfield.setBackground(Color.red); panel_number.setBackground(Color.green); panel_op.setBackground(Color.blue); } public void setBounds() { // 設(shè)置組件位置,沒什么好說的.... setBounds(0, 0, frame_width, frame_height); textfield.setBounds(0, 0, frame_width, frame_height / 2); } public void addButtons() { String [] titles1 = {'/', '*', '-', // 數(shù)字區(qū)按鈕的label值'7', '8', '9', '4', '5', '6', '1', '2', '3', '0', '.', 'c'}; String [] titles2 = {'x', '+', '='}; // 操作符區(qū)按鈕的label值 number_buttons = new Button[15]; // 申請15個按鈕對象 op_buttons = new Button[3];// 申請3個按鈕對象 for(int i = 0; i < this.number_buttons.length; i++) { number_buttons[i] = new Button(titles1[i]); panel_number.add(number_buttons[i]); // 往數(shù)字區(qū)中添加按鈕 number_buttons[i].addActionListener(this); // 按鈕的事件監(jiān)聽器,處理方法為this,也就是下面重載的actionPerformed()方法,這個方法必須被重載 } for(int i = 0; i < this.op_buttons.length; i++) { op_buttons[i] = new Button(titles2[i]); // 往操作符區(qū)中添加按鈕 panel_op.add(this.op_buttons[i]); op_buttons[i].addActionListener(this); // 按鈕的事件監(jiān)聽器,處理方法為this,也就是下面重載的actionPerformed()方法,這個方法必須被重載 } } @Override // 對ActionListener接口的此方法進(jìn)行重載 public void actionPerformed(ActionEvent e) { Button button = (Button) e.getSource(); // 獲得按鈕來源 /** * 如果是數(shù)字鍵和操作符 , 則直接顯示 **/ for(int i = 0; i < 14; i++) { if(button == number_buttons[i] || button == op_buttons[1]) { textfield.setText(textfield.getText() + button.getLabel()); return; } } /** * 如果是c,則清空 **/ if(button == number_buttons[14]) { textfield.setText(''); return; } /** * 如果是回退按鈕 , 則清除最近的一個字符 **/ if(button == op_buttons[0]) { String s = textfield.getText(); if(s.length() > 0) textfield.setText(s.substring(0, s.length() - 1)); return; } /** * 如果是=,則計算結(jié)果 **/ if(button == op_buttons[2]) { textfield.setText(getResult()); return; } } public String getResult() { /** * 計算結(jié)果 **/ String s = textfield.getText(); // 先獲得輸入的字符串 String num = ''; Stack<Double> nums = new Stack<Double>(); Stack<String> ops = new Stack<String>(); /** * 利用regex分離操作數(shù)和操作符,然后用棧進(jìn)行結(jié)果的計算 **/ for(int i = 0; i < s.length(); i++) { String temp = s.charAt(i) + ''; if(temp.matches('[0-9]') || temp.matches('[.]')) { num += temp; } else if(temp.matches('[*+]') || temp.matches('[-]') | temp.matches('[/]')) { if(!num.equals('')) nums.push(Double.parseDouble(num)); if(ops.isEmpty() || cmpLevel(temp,ops.peek())) { ops.push(temp); } else { Double num1 = nums.pop(); Double num2 = nums.pop(); String op2 = ops.pop(); nums.push(compute(num2,num1,op2)); i--; } num = ''; } } while(!ops.isEmpty()) { if(!num.equals('')) { nums.push(compute(nums.pop(),Double.parseDouble(num),ops.pop())); num = ''; } else { Double num1 = nums.pop(); Double num2 = nums.pop(); nums.push(compute(num2,num1,ops.pop())); } } return nums.pop().toString(); } /** * 將兩個操作數(shù)根據(jù)操作符進(jìn)行運(yùn)算 , 返回結(jié)果 ** / public Double compute(double num1,double num2,String op) { if(op.equals('+')) { return num1 + num2; } else if(op.equals('-')) { return num1 - num2; } else if(op.equals('*')) { return num1 * num2; } else return num1 / num2; } /** * 比較兩個操作符的優(yōu)先級 **/ public boolean cmpLevel(String s1,String s2) { if(s1.equals('+') || s1.equals('-')) { return false; } else { if(s2.equals('+') || s2.equals('-')) return true; return false; } } /** * 設(shè)置每個組件的字體 **/ public void setFonts() { panel_number.setFont(new Font('微軟雅黑',Font.PLAIN,24)); panel_op.setFont(new Font('微軟雅黑',Font.PLAIN,24)); panel_other.setFont(new Font('微軟雅黑',Font.PLAIN,24)); textfield.setFont(new Font('微軟雅黑',Font.PLAIN,48)); } /** * main方法 **/ public static void main(String [] args) { new Calculator(); } }

關(guān)于計算器的精彩文章請查看《計算器專題》 ,更多精彩等你來發(fā)現(xiàn)!

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
伊人久久成人| 日韩免费小视频| 99香蕉国产精品偷在线观看| 中文在线中文资源| 日本在线高清| 日韩高清欧美| 久久久久久网| 毛片在线网站| 亚洲精品永久免费视频| 国产夫妻在线| 麻豆91在线播放| 国产精品**亚洲精品| 国产精品videossex| 精品免费av一区二区三区| 另类综合日韩欧美亚洲| 精品丝袜久久| 丁香六月综合| 午夜精品久久久久久久久久蜜桃| 日韩精品中文字幕第1页| 日韩在线观看不卡| 激情久久五月| 麻豆亚洲精品| 日韩欧美中文字幕电影| 国产精品一区二区中文字幕| 久久免费精品| 国产videos久久| 亚洲精品永久免费视频| 五月天久久网站| 蜜桃视频一区二区三区| 国产欧美日韩一区二区三区在线| 国产精品天堂蜜av在线播放| 福利在线一区| 狠狠色狠狠色综合日日tαg| 免费成人av在线播放| 日韩一区二区三区精品视频第3页| 日韩精品久久久久久久软件91| 国产免费av国片精品草莓男男| 色欧美自拍视频| 国产精品av久久久久久麻豆网| 日本大胆欧美人术艺术动态| 日韩精品亚洲专区在线观看| 久久中文欧美| 91精品久久久久久久久久不卡| 亚洲激情二区| 国产精品一区二区av日韩在线| 国产a亚洲精品| 亚洲激精日韩激精欧美精品| 91亚洲无吗| av资源亚洲| 日韩中文字幕91| 国产欧美日韩在线一区二区| 欧美13videosex性极品| 国产农村妇女精品一二区| 欧美日韩亚洲一区二区三区在线| 国产一区福利| 欧美日韩国产在线观看网站| 日本欧美在线| 午夜av不卡| 免费久久99精品国产| 美女在线视频一区| 一二三区精品| 精品国产乱码| 中文精品电影| 波多视频一区| 日本中文字幕视频一区| 日韩av二区| 亚洲免费专区| 丝袜美腿一区| 青青青国产精品| 91精品国产成人观看| 欧美日本三区| jiujiure精品视频播放| 国产探花一区| 香蕉精品视频在线观看| 国产精品日本一区二区三区在线 | 国产精品视区| 国产中文字幕一区二区三区| 午夜日韩影院| 99久久久国产精品美女| 久久gogo国模啪啪裸体| 美女精品一区| 99精品视频精品精品视频| 日本成人中文字幕| 一本一道久久a久久精品蜜桃| 精品国产aⅴ| 91免费精品国偷自产在线在线| 好吊视频一区二区三区四区| 国产一区二区三区不卡av| 日韩高清不卡一区| 国产精品毛片| 久久久久国产| 久久电影tv| 免费日韩成人| 日韩成人亚洲| 91福利精品在线观看| 精品一区欧美| 精品国产一区二| 99国产精品私拍| 蜜臀国产一区| 免费在线观看一区| 久久午夜精品| 国产成人精品一区二区免费看京 | 欧美三级第一页| 一区二区三区国产盗摄| 蜜臀久久精品| 亚洲人成在线网站| 欧美日韩伊人| 日韩精彩视频在线观看| 狠狠久久婷婷| 日韩高清中文字幕一区二区| 欧美天堂一区| 日韩国产欧美在线播放| 婷婷精品视频| 久久美女精品| 日韩a一区二区| 国产成人黄色| 国产精品一区亚洲| 国产精品视频一区二区三区| 蜜臀av一区二区在线免费观看 | 亚洲综合不卡| 欧美精品99| 亚洲另类av| 欧美日韩国产在线一区| 激情国产在线| 麻豆精品新av中文字幕| 国产精品毛片| 久久久五月天| 精品亚洲精品| 啪啪亚洲精品| 首页国产欧美日韩丝袜| 日韩另类视频| 精品九九久久| 国产精品theporn| 欧美一级一区| 亚洲香蕉久久| 国产高清一区| 欧美影院三区| 私拍精品福利视频在线一区| 亚洲一级二级| 日韩精品久久久久久久电影99爱| 日韩av首页| 久久男女视频| 午夜日韩av| 91高清一区| 久久亚洲欧美| 日本欧洲一区二区| 91精品啪在线观看国产爱臀| 午夜精品影视国产一区在线麻豆| 日韩av电影一区| 日韩av电影一区| 国产精品入口久久| 国产精品伦一区二区| 精品一区二区三区在线观看视频| 国产日韩亚洲| 国产66精品| 欧美xxxx中国| 婷婷六月综合| 欧美中文字幕| 国产调教精品| 国产欧美69| 美女av在线免费看| 在线一区av| 国产精品普通话对白| 日韩精品一级二级| 国产精品一线| 国产精品久久久久毛片大屁完整版 | 日韩av在线中文字幕| 美女网站一区| 精品91久久久久| 久久黄色影视| 欧美激情视频一区二区三区在线播放| 国产资源在线观看入口av| av高清不卡| 亚洲色图国产| 欧美亚洲三区| 欧美黄色网页| 99亚洲精品| 日本一区二区三区视频在线看| 青草综合视频| 亚洲人成在线网站| 成人午夜亚洲| 国产videos久久| 97久久亚洲| 久久狠狠久久| 久久久夜夜夜| 日韩视频免费| 国产欧美日韩精品一区二区免费| 美腿丝袜亚洲三区| 激情久久久久久久| 水野朝阳av一区二区三区| 麻豆成人91精品二区三区| 亚洲精品永久免费视频| 免费欧美一区| 亚州国产精品| 老司机免费视频一区二区| 亚洲综合电影| 亚洲一区黄色| 欧美交a欧美精品喷水| 偷拍欧美精品| 国产日韩欧美一区|