更新時間:2021-04-30 11:51:59 來源:動力節點 瀏覽972次
package com.test;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.border.LineBorder;
/**
* 計算器
* @author Administrator
* 代碼流程:
* 1.初始化窗口屬性
* 2.添加顯示框
* 3.添加按鈕
* 4.自定義數字按鈕事件監聽器
* 5.自定義運算符按鈕事件監聽器
* 6.自定義等號按鈕事件監聽器
*/
public class CalcFrame extends JFrame{
private static final long serialVersionUID = 1L;
private JTextField showView = null;
private NumberBtnActionListener numberBtnActionListener;
private LogicBtnActionListener logicBtnActionListener;
private String logic;//記錄運算符的字符串
private String content1 = "";//記錄第一個數字的字符串
private String content2 = "";//記錄第二個數字的字符串
/**
* 一些窗口的初始化操作,放入構造器中(封裝思想)
*/
public CalcFrame() {
//窗口標題
//思考: 調用方法時沒有對象來調用 怎么回事??
setTitle("java計算器");
//窗口位置和大小
//需要注意的是 這個坐標是相對于桌面 在桌面的哪個位置出現
setBounds(300,150,220, 320);
//設置窗口右上角 關閉按鈕的事件
//點擊時關閉
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//不能改變大小
setResizable(false);
//設置窗口布局為null 不設置窗口布局
setLayout(null);
/**
* 重點: 調用方法,往窗口中添加顯示框
*/
addView();
/**
* 重點:調用方法,往窗口中添加按鈕
*/
addButton();
//對象創建完成時,顯示窗口
setVisible(true);
}
/**
* 窗口中添加按鈕的方法
*/
private void addButton() {
numberBtnActionListener = new NumberBtnActionListener();
logicBtnActionListener = new LogicBtnActionListener();
JButton button_7 = new JButton("7");
button_7.setBounds(5,65,40,40);
//設置按鈕邊框為 淺灰色 厚度為1
button_7.setBorder(new LineBorder(Color.lightGray,1));
button_7.addActionListener(numberBtnActionListener);
add(button_7);
JButton button_8 = new JButton("8");
button_8.setBounds(60,65,40,40);
button_8.setBorder(new LineBorder(Color.lightGray,1));
button_8.addActionListener(numberBtnActionListener);
add(button_8);
JButton button_9 = new JButton("9");
button_9.setBounds(115,65,40,40);
button_9.setBorder(new LineBorder(Color.lightGray,1));
button_9.addActionListener(numberBtnActionListener);
add(button_9);
JButton button_add = new JButton("+");
button_add.setBounds(170,65,40,40);
button_add.setBorder(new LineBorder(Color.lightGray,1));
button_add.addActionListener(logicBtnActionListener);
add(button_add);
JButton button_4 = new JButton("4");
button_4.setBounds(5,120,40,40);
//設置按鈕邊框為 淺灰色 厚度為1
button_4.setBorder(new LineBorder(Color.lightGray,1));
button_4.addActionListener(numberBtnActionListener);
add(button_4);
JButton button_5 = new JButton("5");
button_5.setBounds(60,120,40,40);
button_5.setBorder(new LineBorder(Color.lightGray,1));
button_5.addActionListener(numberBtnActionListener);
add(button_5);
JButton button_6 = new JButton("6");
button_6.setBounds(115,120,40,40);
button_6.setBorder(new LineBorder(Color.lightGray,1));
button_6.addActionListener(numberBtnActionListener);
add(button_6);
JButton button_sub = new JButton("-");
button_sub.setBounds(170,120,40,40);
button_sub.setBorder(new LineBorder(Color.lightGray,1));
button_sub.addActionListener(logicBtnActionListener);
add(button_sub);
JButton button_1 = new JButton("1");
button_1.setBounds(5,175,40,40);
//設置按鈕邊框為 淺灰色 厚度為1
button_1.setBorder(new LineBorder(Color.lightGray,1));
button_1.addActionListener(numberBtnActionListener);
add(button_1);
JButton button_2 = new JButton("2");
button_2.setBounds(60,175,40,40);
button_2.setBorder(new LineBorder(Color.lightGray,1));
button_2.addActionListener(numberBtnActionListener);
add(button_2);
JButton button_3 = new JButton("3");
button_3.setBounds(115,175,40,40);
button_3.setBorder(new LineBorder(Color.lightGray,1));
button_3.addActionListener(numberBtnActionListener);
add(button_3);
JButton button_mul = new JButton("*");
button_mul.setBounds(170,175,40,40);
button_mul.setBorder(new LineBorder(Color.lightGray,1));
button_mul.addActionListener(logicBtnActionListener);
add(button_mul);
JButton button_0 = new JButton("0");
button_0.setBounds(5,230,40,40);
//設置按鈕邊框為 淺灰色 厚度為1
button_0.setBorder(new LineBorder(Color.lightGray,1));
button_0.addActionListener(numberBtnActionListener);
add(button_0);
JButton button_eq = new JButton("=");
button_eq.setBounds(60,230,40,40);
button_eq.setBorder(new LineBorder(Color.lightGray,1));
button_eq.addActionListener(new EqBtnActionListener());
add(button_eq);
JButton button_c = new JButton("c");
button_c.setBounds(115,230,40,40);
button_c.setBorder(new LineBorder(Color.lightGray,1));
button_c.addActionListener(new CleanBtnActionListener());
add(button_c);
JButton button_div = new JButton("/");
button_div.setBounds(170,230,40,40);
button_div.setBorder(new LineBorder(Color.lightGray,1));
button_div.addActionListener(logicBtnActionListener);
add(button_div);
}
/**
* 往窗口添加顯示框的方法
*/
private void addView() {
//先添加顯示框 只讀編輯框 默認顯示0 所以直接在構造器中 傳入0 注意 傳入的是字符串才能顯示
//這里使用成員變量的原因是:在按鈕的事件監聽器中需要使用顯示框變量,所有使用成員變量來保存這個顯示框,其他方法才能訪問
showView = new JTextField("0");
//需要注意,這里的坐標是相對于窗口內部,而不再是桌面。
showView.setBounds(5, 5, 205, 55);
showView.setHorizontalAlignment(JTextField.RIGHT);
//設置是否可編輯 設置只讀
showView.setEditable(false);
//設置背景色
showView.setBackground(new Color(192, 192, 192));
//設置字體 粗細 大小
showView.setFont(new Font("Cambria", Font.BOLD, 16));
add(showView);
}
public static void main(String[] args) {
new CalcFrame();
}
/**
* 使用內部類實現事件監聽器接口
* 數字按鈕監聽器
* 此監聽器需要做的事
* 1.獲取按鈕內容
* 2.拼接字符串
* 3.保存到第一個數字字符串成員變量
* 3.轉換為數字
* 4.設置到顯示框
* 添加了運算符按鈕之后增加的操作
* 6.判斷運算符有沒有被點擊
* 7.如果點擊了 將拼接的字符串保存到第二個數字字符串變量中
*/
class NumberBtnActionListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
//2.獲取按鈕內容
JButton btn = (JButton)e.getSource();
String btn_text = btn.getText();
if (logic!=null&&!"".equals(logic)) {
//3.拼接字符串
content2=content2+btn_text;
//4.轉換為數字
int number = Integer.valueOf(content2);
//5.設置到顯示框
showView.setText(number+"");
}else {
//3.拼接字符串
content1=content1+btn_text;
//4.轉換為數字
int number = Integer.valueOf(content1);
//5.設置到顯示框
showView.setText(number+"");
}
}
}
/**
* 清空按鈕事件監聽器
* 1.設置顯示框內容為空
* 2.清空數字字符串
* 3.清空運算符字符串
*/
class CleanBtnActionListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
//1.設置顯示框內容為空
showView.setText("0");
//2.清空操作
content1 = "";
content2 = "";
logic = "";
}
}
/**
* 運算符按鈕事件監聽器
*
* 點擊運算符按鈕是判斷計算器前后兩個數字的臨界點(臨界操作)
* 也就是說,點擊運算符按鈕后,需要將運算符保存,供數字按鈕監聽器中判斷
* 1.獲取運算符符號
* 2.保存到成員變量中(為什么要保存到成員變量中)
*/
class LogicBtnActionListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
//1.獲取運算符內容
JButton btn = (JButton)e.getSource();
String logic = btn.getText();
//2.保存到成員變量中 因為成員變量與這個局部變量名字相同,且this代表的是當前監聽器對象,所有使用CalcFrame中this
CalcFrame.this.logic = logic;
}
}
/**
* 等號按鈕事件監聽器
* 1.將數字字符串1轉換為數字
* 2.將數字字符串2轉換為數字
* 3.對運算符進行判斷和運算
* 4.顯示框顯示內容
* 5.清空兩個數字字符串和運算符
* @author Administrator
*
*/
class EqBtnActionListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
if (content1!=null&&!"".equals(content1)&&content2!=null&&!"".equals(content2)&&logic!=null&&!"".equals(logic)) {
//1.將數字字符串1轉換為數字
Integer number1 = Integer.valueOf(content1);
//2.將數字字符串2轉換為數字
Integer number2 = Integer.valueOf(content2);
//3.判斷運算符
String content = "";
switch (logic) {
case "+":
content = (number1+number2)+"";
break;
case "-":
content = (number1-number2)+"";
break;
case "*":
content = (number1*number2)+"";
break;
case "/":
content = (new Double(number1)/new Double(number2))+"";
break;
default:
break;
}
//4.顯示框顯示最終結果
showView.setText(content);
//5.清空操作
content1 = "";
content2 = "";
logic = "";
}
}
}
}
以上就是動力節點小編介紹的"Java計算器代碼是什么"的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為您服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習