java實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器類實(shí)例
本文實(shí)例講述了java實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器類。分享給大家供大家參考。具體如下:
package chap;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Calculator {
private JFrame frame;
private JPanel panel,panelKeys,panelKeys_up,panelKeys_down;
private JTextField textComputer;//計(jì)算區(qū)域
private JButton buttonBk,buttonC;//退格鍵和清零鍵
private JButton button[];//數(shù)字鍵組
private JButton buttonDot,buttonAddSub,buttonAdd,buttonSub,buttonMul,buttonDiv,button1,button2,button3,buttonEqual;
private double result;//計(jì)算結(jié)果
private final short ADD = 1;
private final short SUB = 2;
private final short MUL = 3;
private final short DIV = 4;
private short operator = -1;//運(yùn)算符
public Calculator(){
frame = new JFrame("計(jì)算機(jī)");
frame.setSize(400, 250);
panel = new JPanel();//全局面板
panel.setVisible(true);
frame.setVisible(true);
frame.getContentPane().add(panel);
ActionListener listener = new ComputerActionListener();//按鍵監(jiān)聽器
//計(jì)算區(qū)
textComputer = new JTextField(15);
textComputer.setText("");
textComputer.setEditable(false);
textComputer.setBackground(new Color(255,255,255));
//功能鍵上半部分
panelKeys_up = new JPanel();
panelKeys_up.setLayout(new FlowLayout(FlowLayout.RIGHT));
buttonBk = new JButton("Backspace");
buttonBk.setForeground(new Color(255,0,0));
buttonC = new JButton("C");
buttonC.setForeground(new Color(255,0,0));
buttonBk.addActionListener(listener);
buttonC.addActionListener(listener);
panelKeys_up.add(buttonBk);
panelKeys_up.add(buttonC);
//功能鍵下半部分
panelKeys_down = new JPanel();
panelKeys_down.setLayout(new GridLayout(4,5));
button = new JButton[10];
for(int i = 0;i < button.length;i++){
button[i] = new JButton(Integer.toString(i));
button[i].setForeground(new Color(255,0,0));
}
buttonAddSub = new JButton("+/-");
buttonAddSub.setForeground(new Color(255,0,0));
buttonAdd = new JButton("+");
buttonAdd.setForeground(new Color(255,0,0));
buttonSub = new JButton("-");
buttonSub.setForeground(new Color(255,0,0));
buttonMul = new JButton("*");
buttonMul.setForeground(new Color(255,0,0));
buttonDiv = new JButton("/");
buttonDiv.setForeground(new Color(255,0,0));
button1 = new JButton();
button2 = new JButton();
button3 = new JButton();
button1.setForeground(new Color(255,0,0));
button2.setForeground(new Color(255,0,0));
button3.setForeground(new Color(255,0,0));
buttonEqual = new JButton("=");
buttonEqual.setForeground(new Color(255,0,0));
buttonAddSub.addActionListener(listener);
buttonAdd.addActionListener(listener);
buttonSub.addActionListener(listener);
buttonMul.addActionListener(listener);
buttonDiv.addActionListener(listener);
buttonEqual.addActionListener(listener);
for(int i = 0 ; i <=9 ; i++){
button[i].addActionListener(listener);
}
for(int i = 0 ; i <=9 ; i++){
panelKeys_down.add(button[i]);
}
panelKeys_down.add(buttonAddSub);
panelKeys_down.add(buttonAdd);
panelKeys_down.add(buttonSub);
panelKeys_down.add(buttonMul);
panelKeys_down.add(buttonDiv);
panelKeys_down.add(buttonEqual);
panel.setLayout(new BorderLayout());
panel.add(textComputer,BorderLayout.NORTH);
panel.add(panelKeys_up,BorderLayout.CENTER);
panel.add(panelKeys_down,BorderLayout.SOUTH);
}
class ComputerActionListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent event) {
// TODO Auto-generated method stub
Object keyButton = event.getSource();
String text = textComputer.getText();
DecimalFormat df = new DecimalFormat("0.###########");
//Backspace
if(keyButton == buttonBk && text.length() > 0){
textComputer.setText(text.substring(0,text.length()-1));
}
//C鍵
if(keyButton == buttonC){
result = 0;
textComputer.setText("");
}
//數(shù)字鍵
for(int i=0;i<10;i++){
if(keyButton == button[i]){
textComputer.setText(text+i);
}
}
if(keyButton == buttonAdd){
operator = 1;
}
if(keyButton == buttonSub){
operator = 2;
}
if(keyButton == buttonMul){
operator = 3;
}
if(keyButton == buttonDiv){
operator = 4;
}
//符號(hào)鍵
if(keyButton == buttonAdd || keyButton == buttonSub || keyButton == buttonMul || keyButton == buttonDiv || keyButton == buttonEqual){
switch(operator){
case ADD:
result += Double.parseDouble(text);
break;
case SUB:
result -=Double.parseDouble(text);
break;
case MUL:
result *=Double.parseDouble(text);
break;
case DIV:
result /=Double.parseDouble(text);
break;
default:
result = Double.parseDouble(text);
}
textComputer.setText("");
}
if(keyButton == buttonEqual){
textComputer.setText(String.valueOf(result));
}
}
}
public static void main(String args[]){
new Calculator();
}
}
希望本文所述對(duì)大家的java程序設(shè)計(jì)有所幫助。
- Java簡(jiǎn)易計(jì)算器程序設(shè)計(jì)
- java實(shí)現(xiàn)簡(jiǎn)易計(jì)算器功能
- Java實(shí)現(xiàn)計(jì)算器的代碼
- java 簡(jiǎn)單的計(jì)算器程序?qū)嵗a
- java實(shí)現(xiàn)計(jì)算器功能
- 用Java實(shí)現(xiàn)簡(jiǎn)單計(jì)算器功能
- Java編寫簡(jiǎn)單計(jì)算器的完整實(shí)現(xiàn)過程
- 200行Java代碼編寫一個(gè)計(jì)算器程序
- Java編寫計(jì)算器的常見方法實(shí)例總結(jié)
- 用Java打造簡(jiǎn)易計(jì)算器的實(shí)現(xiàn)步驟
相關(guān)文章
Tomcat?8.5?+mysql?5.7+jdk1.8開發(fā)JavaSE的金牌榜小項(xiàng)目
這篇文章主要介紹了Tomcat?8.5?+mysql?5.7+jdk1.8開發(fā)JavaSE的金牌榜小項(xiàng)目,本文通過圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05
帶你了解Java數(shù)據(jù)結(jié)構(gòu)和算法之無權(quán)無向圖
這篇文章主要為大家介紹了Java數(shù)據(jù)結(jié)構(gòu)和算法之無權(quán)無向圖?,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-01-01
java實(shí)現(xiàn)微信公眾號(hào)發(fā)送模版消息
這篇文章以訂單推送為例,主要為大家詳細(xì)介紹了java實(shí)現(xiàn)微信公眾號(hào)發(fā)送模版消息,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
Java實(shí)現(xiàn)學(xué)生管理系統(tǒng)(IO版)
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
Spring Boot 3.x 全新的熱部署配置方式詳解(IntelliJ ID
這篇文章主要介紹了Spring Boot 3.x 全新的熱部署配置方式(IntelliJ IDEA 2023.1),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07
SpringBoot整合Keycloak實(shí)現(xiàn)單點(diǎn)登錄的示例代碼
本文主要介紹了SpringBoot整合Keycloak實(shí)現(xiàn)單點(diǎn)登錄的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
MyBatis_Generator插件的安裝以及簡(jiǎn)單使用方法(圖解)
下面小編就為大家?guī)硪黄狹yBatis_Generator插件的安裝以及簡(jiǎn)單使用方法(圖解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05
Spring調(diào)度框架EnableScheduling&Scheduled源碼解析
這篇文章主要介紹了Spring調(diào)度框架EnableScheduling&Scheduled源碼解析,@EnableScheduling&Scheduled定時(shí)調(diào)度框架,本著不僅知其然還要知其所以然的指導(dǎo)思想,下面對(duì)該調(diào)度框架進(jìn)行源碼解析,以便更好的理解其執(zhí)行過程,需要的朋友可以參考下2024-01-01

