日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

java swing实现计算器_Java swing实现的计算器功能完整实例

發(fā)布時(shí)間:2025/3/19 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java swing实现计算器_Java swing实现的计算器功能完整实例 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文實(shí)例講述了Java swing實(shí)現(xiàn)的計(jì)算器功能。分享給大家供大家參考,具體如下:

package awtDemo;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.util.Vector;

public class Calculator {

String str1 = "0"; // 運(yùn)算數(shù)1 初值一定為0 為了程序的安全

String str2 = "0"; // 運(yùn)算數(shù)2

String signal = "+"; // 運(yùn)算符

String result = "";// 結(jié)果

// 狀態(tài)開(kāi)關(guān)

int k1 = 1;// 開(kāi)關(guān)1 用于選擇輸入方向 將要寫(xiě)入str2或 str2

int k2 = 1;// 開(kāi)關(guān)2 符號(hào)鍵 次數(shù) k2>1說(shuō)明進(jìn)行的是2+3-9+8 這樣的多符號(hào)運(yùn)算

int k3 = 1;// 開(kāi)關(guān)3 str1 是否可以被清0 ==1時(shí)可以 !=1時(shí)不能被清0

int k4 = 1;// 開(kāi)關(guān)4 str2 同上

int k5 = 1;// 開(kāi)關(guān)5 控制小數(shù)點(diǎn)可否被錄入 ==1時(shí)可以 !=1 輸入的小數(shù)點(diǎn)被丟掉

JButton store; // 寄存器 記錄 是否連續(xù)按下符號(hào)鍵

@SuppressWarnings("rawtypes")

Vector vt = new Vector(20, 10);

JFrame frame = new JFrame("腳本之家 - 計(jì)算器");

JTextField result_TextField = new JTextField(result, 20);// 20列

JButton clear_Button = new JButton("清除");

JButton button0 = new JButton("0");

JButton button1 = new JButton("1");

JButton button2 = new JButton("2");

JButton button3 = new JButton("3");

JButton button4 = new JButton("4");

JButton button5 = new JButton("5");

JButton button6 = new JButton("6");

JButton button7 = new JButton("7");

JButton button8 = new JButton("8");

JButton button9 = new JButton("9");

JButton button_Dian = new JButton(".");

JButton button_jia = new JButton("+");

JButton button_jian = new JButton("-");

JButton button_cheng = new JButton("*");

JButton button_chu = new JButton("/");

JButton button_dy = new JButton("=");

Calculator() {

button0.setMnemonic(KeyEvent.VK_0);// 等效鍵

// 其它 等效鍵 略,

result_TextField.setHorizontalAlignment(JTextField.RIGHT);// 文本框 右對(duì)齊

JPanel pan = new JPanel();

pan.setLayout(new GridLayout(4, 4, 5, 5));// 四行四列 邊距為5像素

pan.add(button7);

pan.add(button8);

pan.add(button9);

pan.add(button_chu);

pan.add(button4);

pan.add(button5);

pan.add(button6);

pan.add(button_cheng);

pan.add(button1);

pan.add(button2);

pan.add(button3);

pan.add(button_jian);

pan.add(button0);

pan.add(button_Dian);

pan.add(button_dy);

pan.add(button_jia);

pan.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));// pan對(duì)象的邊距

JPanel pan2 = new JPanel();

pan2.setLayout(new BorderLayout());

pan2.add(result_TextField, BorderLayout.WEST);

pan2.add(clear_Button, BorderLayout.EAST);

frame.setLocation(300, 200); // 主窗口 出現(xiàn)在位置

frame.setResizable(false); // 不能調(diào)大小

frame.getContentPane().setLayout(new BorderLayout());

frame.getContentPane().add(pan2, BorderLayout.NORTH);

frame.getContentPane().add(pan, BorderLayout.CENTER);

frame.pack();

frame.setVisible(true);

// 事件處理 程 序

// 數(shù) 字 鍵

class Listener implements ActionListener {

@SuppressWarnings("unchecked")

public void actionPerformed(ActionEvent e) {

String ss = ((JButton) e.getSource()).getText();

store = (JButton) e.getSource();

vt.add(store);

if (k1 == 1) {

if (k3 == 1) {

str1 = "";

k5 = 1;// 還原開(kāi)關(guān)k5狀態(tài)

}

str1 = str1 + ss;

k3 = k3 + 1;

result_TextField.setText(str1);// 顯示

} else if (k1 == 2) {

if (k4 == 1) {

str2 = "";

k5 = 1; // 還原開(kāi)關(guān)k5狀態(tài)

}

str2 = str2 + ss;

k4 = k4 + 1;

result_TextField.setText(str2);

}

}

}

// 符 號(hào)

class Listener_signal implements ActionListener {

@SuppressWarnings("unchecked")

public void actionPerformed(ActionEvent e) {

String ss2 = ((JButton) e.getSource()).getText();

store = (JButton) e.getSource();

vt.add(store);

if (k2 == 1) {

k1 = 2;// 開(kāi)關(guān) k1 為1時(shí),向數(shù)1寫(xiě) 為2時(shí),向數(shù)2寫(xiě)

k5 = 1;

signal = ss2;

k2 = k2 + 1;// 按符號(hào)鍵的次數(shù)

} else {

int a = vt.size();

JButton c = (JButton) vt.get(a - 2);

if (!(c.getText().equals("+"))

&& !(c.getText().equals("-"))

&& !(c.getText().equals("*"))

&& !(c.getText().equals("/")))

{

cal();

str1 = result;

k1 = 2;// 開(kāi)關(guān) k1 為1時(shí),向數(shù)1寫(xiě) 為2時(shí),向數(shù)2寫(xiě)

k5 = 1;

k4 = 1;

signal = ss2;

}

k2 = k2 + 1;

}

}

}

// 清除

class Listener_clear implements ActionListener {

@SuppressWarnings("unchecked")

public void actionPerformed(ActionEvent e) {

store = (JButton) e.getSource();

vt.add(store);

k5 = 1;

k2 = 1;

k1 = 1;

k3 = 1;

k4 = 1;

str1 = "0";

str2 = "0";

signal = "";

result = "";

result_TextField.setText(result);

vt.clear();

}

}

// 等 于

class Listener_dy implements ActionListener {

@SuppressWarnings("unchecked")

public void actionPerformed(ActionEvent e) {

store = (JButton) e.getSource();

vt.add(store);

cal();

k1 = 1; // 還原開(kāi)關(guān)k1狀態(tài)

// str1=result;

k2 = 1;

k3 = 1;// 還原開(kāi)關(guān)k3狀態(tài)

k4 = 1; // 還原開(kāi)關(guān)k4狀態(tài)

str1 = result; // 為7+5=12 +5=17 這種計(jì)算做準(zhǔn)備

}

}

// 小數(shù)點(diǎn)

class Listener_xiaos implements ActionListener {

@SuppressWarnings("unchecked")

public void actionPerformed(ActionEvent e) {

store = (JButton) e.getSource();

vt.add(store);

if (k5 == 1) {

String ss2 = ((JButton) e.getSource()).getText();

if (k1 == 1) {

if (k3 == 1) {

str1 = "";

k5 = 1; // 還原開(kāi)關(guān)k5狀態(tài)

}

str1 = str1 + ss2;

k3 = k3 + 1;

result_TextField.setText(str1);// 顯示

} else if (k1 == 2) {

if (k4 == 1) {

str2 = "";

k5 = 1; // 還原開(kāi)關(guān)k5狀態(tài)

}

str2 = str2 + ss2;

k4 = k4 + 1;

result_TextField.setText(str2);

}

}

k5 = k5 + 1;

}

}

// 注冊(cè) 監(jiān)聽(tīng)器

Listener_dy jt_dy = new Listener_dy();

Listener jt = new Listener();// 臨聽(tīng)數(shù)字鍵

Listener_signal jt_signal = new Listener_signal();// 臨 聽(tīng)符 號(hào)鍵

Listener_clear jt_c = new Listener_clear(); // 清除鍵

Listener_xiaos jt_xs = new Listener_xiaos();// 小數(shù)點(diǎn) 鍵

button7.addActionListener(jt);

button8.addActionListener(jt);

button9.addActionListener(jt);

button_chu.addActionListener(jt_signal);

button4.addActionListener(jt);

button5.addActionListener(jt);

button6.addActionListener(jt);

button_cheng.addActionListener(jt_signal);

button1.addActionListener(jt);

button2.addActionListener(jt);

button3.addActionListener(jt);

button_jian.addActionListener(jt_signal);

button0.addActionListener(jt);

button_Dian.addActionListener(jt_xs);

button_dy.addActionListener(jt_dy);

button_jia.addActionListener(jt_signal);

clear_Button.addActionListener(jt_c);

// 關(guān)閉事件處理程序

frame.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

}

// 計(jì) 算

public void cal() {

double a2;// 運(yùn)算數(shù)1

double b2;// 運(yùn)算數(shù)2

String c = signal;// 運(yùn)算符

double result2 = 0;// 結(jié)果

if (c.equals("")) {

result_TextField.setText("請(qǐng)輸入運(yùn)算符");

} else {

if (str1.equals(".")) // 字符串 "." 轉(zhuǎn)換成double型數(shù)據(jù)時(shí) 會(huì)出錯(cuò) 所以手工轉(zhuǎn)

str1 = "0.0";

if (str2.equals("."))

str2 = "0.0";

a2 = Double.valueOf(str1).doubleValue();

b2 = Double.valueOf(str2).doubleValue();

if (c.equals("+")) {

result2 = a2 + b2;

}

if (c.equals("-")) {

result2 = a2 - b2;

}

if (c.equals("*")) {

result2 = a2 * b2;

}

if (c.equals("/")) {

if (b2 == 0) {

result2 = 0;

} else {

result2 = a2 / b2;

}

}

result = ((new Double(result2)).toString());

result_TextField.setText(result);

}

}

@SuppressWarnings("unused")

public static void main(String[] args) {

// 界面風(fēng)格,可以去除

try {

UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");

} catch (Exception e) {

e.printStackTrace();

}

Calculator cal = new Calculator();

}

}

運(yùn)行效果:

PS:這里再為大家推薦幾款計(jì)算工具供大家進(jìn)一步參考借鑒:

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。

總結(jié)

以上是生活随笔為你收集整理的java swing实现计算器_Java swing实现的计算器功能完整实例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。