張文哲 王璐 崔洪宇
在MyEclipse 8.6 運行環境下,應用圖形用戶界面采用JAVA程序設計語言,實現簡單的計算器功能。本文利用Java Applet圖形界面首先開始設計一個計算器的界面,定義計算器所需要的按鈕并賦給其按鈕名稱,使得使用計算器時簡單明了,清晰可見,操作輕松。
1.界面設計
新建類caculator_1繼承JFrame并設置其位置大小關閉方式等即出現以上窗體。在整體布局中添加JPanel,采用網格布局添加20個JButton,分別代表不同的數字以及功能,還要添加一個現實輸入信息的文本框,用來顯示輸入的信息與最后結果。將文本框放在布局最上面,將20個JButton按一列5個按鈕顯示在布局中,使20個按鈕順序排列在布局上。計算器的整體界面如圖1所示。
圖1 可視化計算器界面
2.具體功能設計
(1)實現加、減、乘、除四則基本運算
在輸入加減乘除運算符之前,要先判斷一下是否已經輸入操作數,若輸入了,要先記錄前面輸入的操作數,然后再進行運算,否則默認第一個操作數是零。用符號區分各種運算,來進行不同種類的運算。
(2)能夠實現求倒數、開方、取反運算
在進行這幾個運算中只需要一個操作數,所以輸入一個操作數之后,點擊對應運算的按鈕,進行運算操作。
(3)按鍵“C”能夠實現清除文本框中的信息功能。
“CE”按鈕能夠實現撤銷文本框的信息功能。
3.關鍵代碼
(1)實現四則運算的關鍵代碼
if (operator.equals("+")){resultNum += getNumberFromText();}
else if (operator.equals("-")){resultNum -= getNumber FromText();}
else if (operator.equals("*")){resultNum *= getNumber FromText();}
private void handleOperator(String key) {if (operator.equals("/");}
if (getNumberFromText() == .0){operateValidFlag = false;resultText.setText(“除數不能為零”);}
else {resultNum /= etNumberFromText();}
(2)實現開根號、倒數、定義相反數等運算的關鍵代碼
// 開根號運
if (temp == btn_Sqrt) { String s = txt.getText(); if (s.charAt(0) == '-') {JOptionPane.showMessageDialog(null, "負數不能開根號");} // 判斷符號是否符合運算規則
else {txt.setText(Double.toString(java.lang.Math.sqrt(Double.parseDouble(txt.getText()))));}
// 倒數運算
if (temp == btn_Dao) {if (txt.getText().charAt(0) == '0' && txt.getText().length() == 1) {// 判斷此數是否符合進行倒數運算規則JOptionPane.showMessageDialog(null, "零不能求倒數");} else { boolean isDec = true;int i, j, k;String s = Double.toString(1 / Double(txt.getText()));
for (i = 0; i < s.length(); i++) { if (s.charAt(i) == '.') { break;}} for (j = i + 1; j < s.length(); j++) {if (s.charAt(j) != '0') { isDec = false; break;} } if (isDec == true) {String stemp = "";
for (k = 0; k < i; k++) { stemp += s.charAt(k); }xt.setText(stemp); } else {txt.setText(s);} }}
// 定義相反數按鈕
jButton16 = new JButton("+/-");
0-Double.parseDouble(jTextField.getText().trim()); Button16.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { double i2=0-Double.parseDouble(jTextField.getText().trim());jTextField.setText(Double.toString(i2));}}); 通過使用文本框中的數據變成其相反數
(3)實現“C”鍵、定義進制轉換的關鍵代碼
// 按下C按鈕,文本框內數據清除,同時middle,result清0
if (temp == btn_C) {
middle = result = 0;
txt.setText(“”);
}
//定義進制轉換按鈕,jButton31、jButton34、jButton37、jButton40分別為十六進制、十進制、八進制、二進制,通過調用Integer.toHexString(n)十六進制、Integer.toOctalString(n)八進制、Integer.toBinaryString(n)二進制來實現進制之間的相互轉換。
4.結果與分析
1)計算6.8+7.5=14.3
本實例需要用戶通過按鈕輸入運算表達式,由界面提供數字和符號的按鈕,同時還能夠顯示輸入和輸出結果,當進行按下‘=鍵時,進行表達式的求值。
先輸入5.6,按加號鍵,再輸入6.7,按等于號,得出最后結果。
2)取對數運算
按下ln按鈕,其方法是調用Math.log1p(i),當對數值i大于0時就調用Math.ln(i)來輸出結果,當i小于0時就在文本框中顯示負數不能求對數!5.結論
3)三角函數運算
三角函數sin、cos、tan在使用時需要先調用弧度按鈕,將相應的角度轉換成弧度以后在使用三角函數對應的按鈕才可以實現求三角函數的值。求弧度方法在定義弧度按鈕時實現,string.valueOf(i/180*Math.PI)求對應的弧度sin、cos、tan使用math中的方法。
5.結論
本設計是一個圖形界面的計算器,可以在標準計算器和科學計算器之間切換,標準計算器的基本功能有:加、減、乘、除等基本運算,科學計算器的基本功能有:三角函數、進制轉換、開方運算、倒數運算等等,本計算器還可以支持鍵盤錄入功能,總的來說此計算器在設計上,優雅美觀,功能全面,錯誤漏洞少。