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

您的位置:首頁技術文章
文章詳情頁

java實現簡易版圖形界面計算器

瀏覽:27日期:2022-09-01 14:21:23

經過一個月的Java學習,聽說Java中的第一個小型程序好多都做的是計算器,今天我也來做做吧,把這一個月學習的知識簡單的綜合一下,熟練近期學習的知識點。

我做的計算器如下圖:

java實現簡易版圖形界面計算器

功能:對實數進行加、減、乘、除、余操作。

界面設置:首先設置一個窗體,一個菜單條,三個菜單項(無功能),三個標簽(作為顯示數據的地方,第一個標簽作為提示作用,第二個標簽作為輸入數據作用,第三個標簽顯示結果作用),20個按鈕(循環進行添加),兩個面板(把三個標簽添加到第一個面板里,把20個按鈕添加到第二個面板里,用網格布局,這樣做不易位置錯亂),再把兩個面板添加到窗體中就OK了。

下面是完整代碼,在一個類中,注釋非常詳細。

package day7_29; import java.awt.BorderLayout;import java.awt.Color;import java.awt.Container;import java.awt.Dimension;import java.awt.Font;import java.awt.GridLayout;import java.awt.SystemColor;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.text.NumberFormat; import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JPanel;import javax.swing.border.BevelBorder; public class Caculate { // 對計算器整體框架的建立 private JFrame frame = new JFrame('&斌的圖形界面計算器&');// 創建窗體對象 private JMenuBar menubar = new JMenuBar(); // 創建菜單條對象 private JMenu menu1 = new JMenu('查看'); // 創建菜單對象1 private JMenu menu2 = new JMenu('編輯'); // 創建菜單對象2 private JMenu menu3 = new JMenu('幫助'); // 創建菜單對象3 private JLabel label_hint = new JLabel(); // 創建提示信息標簽 private JLabel label_input = new JLabel(); // 創建輸入信息標簽 private JLabel label_result = new JLabel(); // 創建輸出結果標簽3 private JPanel panel_show = new JPanel(); // 創建顯示面板 private JPanel panel_operation = new JPanel(); // 創建按鍵面板 private String[] str = { 'AC', '←', '(-)', '+', '7', '8', '9', '-', '4', '5', '6', '*', '1', '2', '3', '÷', '%', '0', '.', '=' }; // 計算器的按鍵從上到下、從左到右順序表示 private JButton[] button = new JButton[str.length]; // 創建計算器的按鍵對象 private double result = 0; // 存儲計算結果 private boolean flag = true; // private boolean find = true; private String command = '='; public static void main(String[] args) {// 主方法 new Caculate().initJFrame(); } // 對界面進行初始化 public void initJFrame() { Container con = frame.getContentPane(); con.setBackground(Color.green); // 設置顏色 // 設置窗體位置及大小(下面一段代碼實現居中) frame.setSize(600, 550); //方法一// Toolkit toolKit = Toolkit.getDefaultToolkit(); // 獲取默認工具包// Dimension dimension = toolKit.getScreenSize(); // 獲取屏幕對象// double screenWidth = dimension.getWidth(); // 獲取屏幕的寬和高// double screenHight = dimension.getHeight();// int jframeWidth = frame.getWidth(); // 獲取窗體的寬和高// int jframeHight = frame.getHeight();// int x = (int) ((screenWidth - jframeWidth) / 2); // 得到窗體真正位置// int y = (int) ((screenHight - jframeHight) / 2);// frame.setLocation(x, y); // 設置窗體居中 //方法二 frame.setLocationRelativeTo(null);//設置窗口相對于指定組件的位置。如果組件當前未顯示,或者 c 為 null,則此窗口將置于屏幕的中央。 menubar.add(menu1);// 把菜單添加到菜單條中 menubar.add(menu2); menubar.add(menu3); menu1.setFont(new Font('', Font.BOLD, 20));// 設置菜單字體樣式 menu2.setFont(new Font('', Font.BOLD, 20)); menu3.setFont(new Font('', Font.BOLD, 20)); frame.setJMenuBar(menubar);// 把菜單添加到菜單條中 label_hint.setText(' '); // 標簽內容初始化為空 label_hint.setHorizontalAlignment(JLabel.RIGHT); // 設置圖標和文本的水平對齊方式為右對齊 label_hint.setFont(new Font('宋體', Font.BOLD, 30));// 設置此標簽的字體。 label_hint.setForeground(Color.RED); // 設置字體顏色為紅色 label_input.setText(' '); // 標簽內容初始化為空 label_input.setHorizontalAlignment(JLabel.RIGHT); // 設置圖標和文本的水平對齊方式為右對齊 label_input.setFont(new Font('宋體', Font.BOLD, 30));// 設置此標簽的字體。 label_input.setForeground(Color.BLACK); // 設置字體顏色為黑色 label_result.setText('0');// 標簽內容初始化內容為0 label_result.setHorizontalAlignment(JLabel.RIGHT); // 設置圖標和文本的水平對齊方式為右對齊 label_result.setFont(new Font('宋體', Font.BOLD, 35));// 設置此標簽的字體。 label_result.setForeground(Color.BLUE); // 設置字體顏色為藍色 panel_show.setLayout(new BorderLayout()); // 設置為邊界布局 panel_show.add(label_hint, BorderLayout.NORTH); // 把錯誤提示標簽放在上面 panel_show.add(label_input, BorderLayout.CENTER);// 把輸入信息標簽放在中間 panel_show.add(label_result, BorderLayout.SOUTH);// 把輸出結果標簽放在下面 // 創建具有指定類型、高亮顯示和陰影顏色的斜面邊框。 panel_show.setBorder( new BevelBorder(BevelBorder.RAISED, new Color(160, 170, 180), null, SystemColor.scrollbar, null)); panel_operation.setLayout(new GridLayout(5, 4, 8, 8));// 按鍵設置為網格布局5行5列間距為8 // 創建具有指定類型、高亮顯示和陰影顏色的斜面邊框。凸出斜面類型。為滾動條提供的背景色。 panel_operation.setBorder( new BevelBorder(BevelBorder.RAISED, new Color(160, 170, 180), null, SystemColor.scrollbar, null)); // 添加按鈕 for (int i = 0; i < str.length; i++) { button[i] = new JButton(str[i]); button[i].setFont(new Font('宋體', Font.BOLD, 30)); // 設置按鈕中字體樣式 if (str[i].equals('+') || str[i].equals('-') || str[i].equals('*') || str[i].equals('÷') || str[i].equals('%') || str[i].equals('=')) { button[i].addActionListener(new OperationListener());// 給按鈕+,-,*,/,%,=注冊監聽器 } else { button[i].addActionListener(new DataListener());//給按鈕AC,←,(-),.,0,1,2,3,4,5,6,7,8,9注冊監聽器 } panel_operation.add(button[i]);// 把每個按鈕分別添加到面板上 } // 把面板添加到窗體框架里 frame.add(panel_operation, BorderLayout.CENTER); frame.add(panel_show, BorderLayout.NORTH); //frame.setResizable(false); // 設置窗體不能改變大小 frame.setVisible(true); // 設置窗體可見 frame.setDefaultCloseOperation(frame.DISPOSE_ON_CLOSE);// 釋放窗口 } public class DataListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { String str = e.getActionCommand();//返回與此動作相關的命令字符串。 if (Caculate.this.flag == true) {//當想輸入新的數字時,清空輸入顯示標簽 label_input.setText(' '); Caculate.this.flag = false; } if (str.equals('(-)')) {//當點擊(-)時 if (label_input.getText().indexOf('(-)') == -1) {//如果此時顯示框里還沒出現(-)時 label_input.setText(str); } } if (!str.equals('(-)')) {//當命令不是(-)時 if (str.equals('AC')) { //點擊清零鍵時 clear(); } else if (str.equals('←')) { //點擊返回鍵時 getBack(); } else if (str.equals('.')) { // 點擊小數點時,小數點只能出現一次,不能在首位 if (label_input.getText().indexOf('.') == -1 && !label_input.getText().equals(' ')) { label_input.setText(label_input.getText() + str); } else { //clear(); label_input.setText(label_input.getText() + str); label_hint.setText('小數點不合法,請重新輸入'); } } else { //點擊0,1,2,3,4,5,6,7,8,9時顯示原數 label_input.setText(label_input.getText() + str); } } } } // 返回上一級 public void getBack() { if (label_input.getText().length() <= 1) { //長度小于等于1時清空顯示框 clear(); } else { String str = ''; if (label_input.getText().length() == 3) { //處理(-)問題,我把(-)看成算一個字符,要返回就整體返回 String str1 = label_input.getText().substring(label_input.getText().length() - 3); if (str1.equals('(-)')) { str = ' '; } else { str = label_input.getText().substring(0, label_input.getText().length() - 1); } } else { //長度大于3時正常返回上一級 str = label_input.getText().substring(0, label_input.getText().length() - 1); } label_input.setText(str); //設置輸入顯示框為str } label_hint.setText(' '); //清空提示顯示框 } // 清屏 public void clear() { label_hint.setText(' '); label_input.setText(' '); label_result.setText('0'); this.result = 0; Caculate.this.flag = true; //恢復初始化標記 Caculate.this.find = true; //恢復初始化標記 } public class OperationListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { String str = e.getActionCommand(); // 返回與此動作相關的命令字符串 if (Caculate.this.flag == false) { //當第一次點擊+,-,*,、,%,=時 if (label_input.getText().contains('(-)')) { //把(-)處理為-,然后在進行數據操作 label_input.setText(label_input.getText().replaceAll('(-)', '-')); } caculate(Double.parseDouble(label_input.getText())); //計算 Caculate.this.flag = true; //把flag標記處理點擊多次操作運算符和輸入下一個數的情況 Caculate.this.command = str; //供下一次數據運算操作命令 } else { //多次點擊+,-,*,/,%,=時 Caculate.this.command = str; if (str == '%' && Caculate.this.find == true) { //處理剛開始輸入顯示框為空時對0取余的情況 Caculate.this.find = false; //把find標記 Caculate.this.command = '='; } } } } //進行數據運算 public void caculate(double ans) { switch (this.command) { case '+': //計算數據的和 this.result += ans; break; case '-': //計算數據的差 this.result -= ans; break; case '*': //計算數據的乘積 this.result *= ans; break; case '÷': //計算數據的商 if (ans == 0) { label_hint.setText('提示:除數不能為0'); return; } this.result /= ans; break; case '%': //計算數據的余 double s1 = this.result; int d1 = (int) s1; double s2 = ans; int d2 = (int) s2; if (d1 == this.result && d2 == ans && d2 != 0) { this.result %= ans; } else { if (d1 != s1) { label_hint.setText('提示:余數的分子必須為整數'); } else if (d2 != s2) { label_hint.setText('提示:余數的分母必須為整數'); } else if (s2 == 0) { label_hint.setText('提示:余數的分母不能為0'); } } break; case '=': //計算結果 this.result = ans; break; } label_result.setText(' ' + format(this.result)); //顯示計算結果 } //計算結果格式處理 public String format(double d) { String formatString = ''; NumberFormat nf = NumberFormat.getInstance(); // 放回當前默認語言環境的通用數字格式 formatString = nf.format(d); // 格式規范化 return formatString; //返回格式化后的數據 }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
av在线最新| 一区二区精品| 国产精品一区二区三区四区在线观看 | 国产一区丝袜| 久久精品国产亚洲一区二区三区| 国产精品蜜月aⅴ在线| 日本va欧美va欧美va精品| 久久精品xxxxx| 精品三级av在线导航| 麻豆国产在线| 免费毛片在线不卡| 亚洲一区网站| 日本综合精品一区| 久久国产欧美日韩精品| 国产高清亚洲| 国产夫妻在线| 婷婷精品进入| 亚洲一区二区三区久久久| 国产精品一区二区三区四区在线观看| 国产精品白浆| 四虎影视精品| 三级一区在线视频先锋| 国产欧美日韩精品一区二区三区 | 欧美日韩精品免费观看视欧美高清免费大片 | 久久xxxx精品视频| 亚洲视频二区| 国产精品一区二区99| 国产精品99视频| 亚洲成人三区| 日本天堂一区| 成人久久久久| 深夜日韩欧美| а√天堂8资源中文在线| 99国产精品自拍| 国产欧美大片| 欧洲av一区二区| 亚欧成人精品| 国产精品久久久久久久免费软件| 欧美xxxx中国| 日韩制服丝袜先锋影音| 欧美国产极品| 日韩视频在线一区二区三区| 国产日韩欧美高清免费| 人人精品亚洲| 日本不卡不码高清免费观看| 中文字幕在线视频网站| 美国三级日本三级久久99| 久久精品亚洲一区二区| 99视频在线精品国自产拍免费观看| 91精品国产一区二区在线观看| av一区在线| 日韩精品a在线观看91| 麻豆精品一区二区综合av| 99精品在线免费在线观看| 亚洲男人在线| 久久视频国产| 久久99影视| 国产精品婷婷| 91亚洲国产| 婷婷五月色综合香五月| 久久久成人网| 久久不卡日韩美女| 视频在线观看91| 久久男人天堂| 欧美精品影院| 在线视频日韩| 久久久久久一区二区| 欧美特黄视频| 久久一区国产| 视频一区日韩精品| 日韩一区二区在线免费| 欧美一级一区| 国产农村妇女精品一二区| 国产videos久久| 日本少妇一区二区| 亚洲大全视频| 国产成人a视频高清在线观看| 日韩三级久久| 欧美日韩视频| 色婷婷综合网| 国产精品密蕾丝视频下载| 免费观看日韩电影| 都市激情国产精品| 欧美精品国产白浆久久久久| 国产一级一区二区| 私拍精品福利视频在线一区| 欧美激情视频一区二区三区免费 | 久久不卡日韩美女| 亚洲va久久久噜噜噜久久| 自拍日韩欧美| 日韩精品一卡| 日产精品一区| 国产中文在线播放| 国产精品久久| 亚洲一二av| 午夜电影亚洲| 日韩高清中文字幕一区二区| 国产成人在线中文字幕| 国产精品宾馆| 国产欧美亚洲一区| 日韩精品三级| 日韩精品免费视频一区二区三区| 亚洲深夜影院| 99在线|亚洲一区二区| 国产字幕视频一区二区| 久久精品国产亚洲夜色av网站| 日韩国产一区二区三区| 97精品中文字幕| 精品国产欧美日韩| 国产精品视频一区二区三区| 日韩二区三区四区| 日韩超碰人人爽人人做人人添| 亚洲人妖在线| 性欧美xxxx免费岛国不卡电影| 久久高清一区| 午夜精品网站| 欧美天堂亚洲电影院在线观看| 亚洲1234区| 99视频精品视频高清免费| 精品一区二区三区中文字幕| 久久99蜜桃| 自拍自偷一区二区三区| 免费日韩视频| 午夜亚洲精品| 中日韩男男gay无套| 夜夜嗨一区二区| 快she精品国产999| 亚洲精品欧美| 日韩高清二区| 国产欧美一区| 九九九精品视频| 久久青青视频| 久久久久国产| 在线一区欧美| 日韩**一区毛片| 国产日韩一区二区三区在线播放 | 日韩精品亚洲专区在线观看| 国产模特精品视频久久久久| 伊人精品视频| 中文字幕一区二区三区四区久久| 亚洲人成在线影院| 国产亚洲高清在线观看| 精品免费av一区二区三区| 97se综合| 欧美精选一区二区三区| 在线一区欧美| 青青青国产精品| 久久超级碰碰| 涩涩av在线| 亚洲欧洲一区| 日本欧美久久久久免费播放网| 国产日韩一区二区三区在线播放| 国产精品一区二区av日韩在线| 国产劲爆久久| 成人久久一区| 蜜桃久久精品一区二区| 久久精品99久久久| www在线观看黄色| 欧美日韩四区| 欧美一级一区| 日韩av福利| 亚洲日本欧美| 精品一区二区三区免费看| 欧美特黄一级大片| 日韩专区视频网站| 亚洲欧洲高清| 蜜臀久久99精品久久久画质超高清| 日本视频中文字幕一区二区三区| 欧美激情视频一区二区三区在线播放| 亚洲国产欧美日本视频| 欧美专区在线| 欧美aⅴ一区二区三区视频| 成人免费电影网址| 天堂久久一区| 日韩在线免费| 日本成人在线视频网站| 日韩中文在线电影| 综合亚洲视频| 国产美女高潮在线| 亚洲精品欧美| 日韩毛片视频| 日韩精品久久久久久| av日韩中文| 亚洲一区日韩在线| 欧美a级一区二区| 日韩视频一区| 精品视频在线你懂得| 蜜臀av亚洲一区中文字幕| 欧美激情另类| 日韩黄色av| 91精品福利| 久久久免费人体| 蜜臀a∨国产成人精品| 美女福利一区二区三区| 日韩av三区| 在线亚洲自拍| 97se综合| 国产毛片一区二区三区| 蜜桃视频欧美| 国产成人精品一区二区免费看京 |