您好,登錄后才能下訂單哦!
這篇文章主要介紹了Java Swing如何編寫一個簡單的計算器軟件,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
1、使用Java圖形界面組件設(shè)計軟件,界面如圖所示。
2、軟件能夠滿足基本的“加、減、乘、除"等運算要求。
3、程序代碼清晰,語法規(guī)范,結(jié)構(gòu)合理,邏輯正確。
4、編輯菜單中包括“復(fù)制和粘貼"兩個菜單項,為菜單項編寫事件代碼。
import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JTextField; public class Calculator extends JFrame { // 顯示計算器按鈕的值和計算后的值 JTextField display; JPanel panel1;// 面板1,放文本框 JPanel panel2;// 面板2,放按鈕 String nowButton;// 當(dāng)前按下的變量 public Calculator() { this.setBounds(0, 0, 500, 500); this.setLocationRelativeTo(null);// 讓窗口在屏幕中間顯示 setTitle("計算器"); // 菜單欄 JMenuBar menuBar = new JMenuBar();// 創(chuàng)建一個菜單欄 JMenu editMenu = new JMenu("編輯(E)");// 創(chuàng)建一級菜單 //創(chuàng)建 "編輯" 一級菜單的子菜單 JMenuItem copyMenuItem = new JMenuItem("復(fù)制"); JMenuItem pasteMenuItem = new JMenuItem("粘貼"); // 子菜單添加到一級菜單 editMenu.add(copyMenuItem); editMenu.add(pasteMenuItem); //將一級菜單添加到菜單欄 menuBar.add(editMenu); //將菜單欄添加到JFrame窗口 this.setJMenuBar(menuBar); // 設(shè)置 "復(fù)制" 子菜單被點擊的監(jiān)聽器 copyMenuItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.out.println("復(fù)制 被點擊"); String i = display.getText(); display.copy(); JButton jb1 = new JButton("復(fù)制"); jb1.addActionListener(this); } }); // 設(shè)置 "粘貼" 子菜單被點擊的監(jiān)聽器 pasteMenuItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.out.println("粘貼 被點擊"); display.paste(); } }); // 初始化,把文本框加在上面north里 display = new JTextField(""); display.setEnabled(true); add(display, BorderLayout.NORTH); // 監(jiān)聽操作按鈕 ActionListener command = new commandAction(); // panel1是中間16個按鈕的布局,放到布局管理器的center里 panel1 = new JPanel(); panel1.setLayout(new GridLayout(5, 4, 5, 5)); addButton1("7", command); addButton1("8", command); addButton1("9", command); addButton1("/", command); addButton1("4", command); addButton1("5", command); addButton1("6", command); addButton1("*", command); addButton1("1", command); addButton1("2", command); addButton1("3", command); addButton1("-", command); addButton1("0", command); addButton1("+/-", command); addButton1(".", command); addButton1("+", command); addButton1("1/x", command); addButton1("%", command); addButton1("sqrt", command); addButton1("=", command); add(panel1, BorderLayout.SOUTH); // panel2是下面的backspace和c的2個的布局,放到布局管理器的south里 panel2 = new JPanel(); panel2.setLayout(new GridLayout(1, 2, 5, 5)); addButton2("BackSace", command); addButton2("C", command); add(panel2, BorderLayout.CENTER); pack(); // 根據(jù)組件大小自動調(diào)節(jié)窗口大小 } // 注冊事件監(jiān)聽器方法(panel1的) public void addButton1(String label, ActionListener listener) { // TODO 自動生成的方法存根 JButton button = new JButton(label); button.addActionListener(listener); panel1.add(button); } // 注冊監(jiān)聽器方法(panel2的) private void addButton2(String label, ActionListener listener) { // TODO 自動生成的方法存根 JButton button = new JButton(label); button.addActionListener(listener); panel2.add(button); } // 創(chuàng)建內(nèi)部類,作用于單擊按鈕執(zhí)行命令的監(jiān)聽器 class commandAction implements ActionListener { @Override public void actionPerformed(ActionEvent event) { // TODO 自動生成的方法存根 nowButton = event.getActionCommand(); if (nowButton != "BackSace" && nowButton != "=") { // 如果是回退和=就不打印這個了 display.setText(display.getText() + nowButton); } if (nowButton.equals("=")) { // 如果是等于號,就計算結(jié)果 display.setText(jisuan1(display.getText())); } if (nowButton.equals("BackSace")) { // 回退一個字符 StringBuffer sb = new StringBuffer(display.getText()); display.setText(sb.substring(0, sb.length() - 1)); } if (nowButton.equals("C")) { // 清空 display.setText(""); } } } // 用來計算的方法 public String jisuan1(String string) { StringBuffer sb = new StringBuffer(string); int commandCount = 0;// 符號數(shù)量 int j = 0;// 計數(shù)器 // 計算有多少個運算符,就有n+1個數(shù)字 for (j = 0; j < sb.length(); j++) { if (sb.charAt(j) <= '9' && sb.charAt(j) >= '0' || sb.charAt(j) == '.') { continue; } else { commandCount++; } } // 初始化符號數(shù)組 char[] command = new char[commandCount]; // 初始化數(shù)字?jǐn)?shù)組(用字符串表示) String[] num = new String[commandCount + 1]; for (j = 0; j < num.length; j++) { num[j] = ""; } // 遍歷一遍,吧每個數(shù)字存進(jìn)數(shù)字?jǐn)?shù)組,每個符號存進(jìn)符號數(shù)組 int k = 0; for (j = 0; j < sb.length(); j++) { if (sb.charAt(j) <= '9' && sb.charAt(j) >= '0' || sb.charAt(j) == '.') { num[k] += sb.charAt(j); continue; } else { command[k] = sb.charAt(j); k++; } } // 計算結(jié)果 double result = 0; for (int i = 0; i < commandCount; i++) { // 取前兩個數(shù),和第一個操作符,運算 double num1 = Double.parseDouble(num[i]); double num2 = Double.parseDouble(num[i + 1]); char cc = command[i]; // 計算 switch (cc) { case '+': result = num1 + num2; break; case '-': result = num1 - num2; break; case '*': result = num1 * num2; break; case '/': result = num1 / num2; break; case '%': result = num1 % num2; break; default: break; } num[i + 1] = String.valueOf(result); } return String.valueOf(result); } //主方法,運行本類,顯示窗體 public static void main(String[] args) { new Calculator().setVisible(true); } }
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Java Swing如何編寫一個簡單的計算器軟件”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。