图形化计算器(Swing GUI)

图形化计算器(Swing GUI)

图形化计算器(Swing GUI)

java

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class GraphicalCalculator extends JFrame {

private JTextField display;

private double firstNumber;

private String operator;

private boolean startNewNumber;

public GraphicalCalculator() {

setTitle("Java Calculator");

setSize(300, 400);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setLayout(new BorderLayout());

display = new JTextField();

display.setEditable(false);

display.setHorizontalAlignment(JTextField.RIGHT);

display.setFont(new Font("Arial", Font.BOLD, 24));

add(display, BorderLayout.NORTH);

JPanel buttonPanel = new JPanel();

buttonPanel.setLayout(new GridLayout(5, 4, 5, 5));

String[] buttons = {

"7", "8", "9", "/",

"4", "5", "6", "*",

"1", "2", "3", "-",

"0", ".", "=", "+",

"C", "CE", "√", "^"

};

for (String text : buttons) {

JButton button = new JButton(text);

button.setFont(new Font("Arial", Font.BOLD, 18));

button.addActionListener(new ButtonClickListener());

buttonPanel.add(button);

}

add(buttonPanel, BorderLayout.CENTER);

}

private class ButtonClickListener implements ActionListener {

@Override

public void actionPerformed(ActionEvent e) {

String command = e.getActionCommand();

if (command.matches("[0-9]")) {

if (startNewNumber) {

display.setText(command);

startNewNumber = false;

} else {

display.setText(display.getText() + command);

}

} else if (command.equals(".")) {

if (!display.getText().contains(".")) {

display.setText(display.getText() + ".");

}

} else if (command.matches("[+\\-*/^√]")) {

firstNumber = Double.parseDouble(display.getText());

operator = command;

startNewNumber = true;

} else if (command.equals("=")) {

double secondNumber = Double.parseDouble(display.getText());

double result = 0;

switch (operator) {

case "+": result = firstNumber + secondNumber; break;

case "-": result = firstNumber - secondNumber; break;

case "*": result = firstNumber * secondNumber; break;

case "/": result = firstNumber / secondNumber; break;

case "^": result = Math.pow(firstNumber, secondNumber); break;

case "√": result = Math.sqrt(firstNumber); break; // 简化处理

}

display.setText(String.valueOf(result));

startNewNumber = true;

} else if (command.equals("C")) {

display.setText("0");

firstNumber = 0;

operator = "";

startNewNumber = true;

} else if (command.equals("CE")) {

display.setText("0");

startNewNumber = true;

}

}

}

public static void main(String[] args) {

SwingUtilities.invokeLater(() -> {

GraphicalCalculator calc = new GraphicalCalculator();

calc.setVisible(true);

});

}

}

特别声明:[图形化计算器(Swing GUI)] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

新媒体人遇紧急摘要难题?AI智能摘要功能救大命!?(新媒体下把关人面临的挑战)

他最爱用里面的“双模式输出”:要是给老板看,选“学术摘要”模式,自动生成目录式要点;发公众号就切“营销摘要”,AI会把干巴巴的数据转化成“义乌工厂三班倒赶工,这个夏日小商品改写行业规则”这样的吸睛标题,连适…

新媒体人遇紧急摘要难题?AI智能摘要功能救大命!?(新媒体下把关人面临的挑战)

沈佳润和妈妈沈春阳现身机场,主动打招呼很有礼貌,真实又善良(沈佳润和妈妈沈春阳现身机场)

说到沈佳润,真的是让我一度懵掉——明明在韩国发了单曲,结果查不到她的名字,评论区冷冷清清的,当时我还心里嘀咕“哎,星二代也没那么容易当啊”。沈春阳更有意思,红条纹上衣松松垮垮的,牛仔裤看着就是超市买的,唯一亮…

沈佳润和妈妈沈春阳现身机场,主动打招呼很有礼貌,真实又善良(沈佳润和妈妈沈春阳现身机场)

陶昕然一句话问住薄永霞,提点李嘉格母女关系不能全听外人来评判(陶昕然采访视频)

在节目中,陶昕然还主持了一场“人生拍卖会”,为几对母女准备了如“勇气喷雾”、“真话转译机”、“超级分身术”和“超魅力眼镜”等有趣的拍品,让大家有机会通过这些道具实现自己未曾完成的愿望。 李嘉格提到,她参加这个…

陶昕然一句话问住薄永霞,提点李嘉格母女关系不能全听外人来评判(陶昕然采访视频)

辣眼!贝克汉姆最狂小儿子只穿内裤模仿亲爹帅照,彻底翻车!(贝克汉姆百科)

维多利亚也被拍到在游艇上层亲自拍下了克鲁兹和杰姬的合照,看起来相当满意,似乎对这段关系没有任何异议。更令人尴尬的是,尽管两人同在法国度假,布鲁克林和妮可拉却丝毫没有与家人合影的意愿,甚至在社交媒体上,维多利亚…

辣眼!贝克汉姆最狂小儿子只穿内裤模仿亲爹帅照,彻底翻车!(贝克汉姆百科)

从"万人捧"到"万人嫌",声誉一落千丈的这4位女明星,到底冤不冤(从万人嫌终成团宠[穿书])

其实我一开始是在《奋斗》中记住了李小璐,因为她出众的外貌让我觉得她就应该是演员。张娜拉在韩国的综艺中表示每次自己缺钱的时候就会去中国,这意思不就是圈钱吗? 无论是无心还是有心,这些都是她潜意识里的认知,所…

从"万人捧"到"万人嫌",声誉一落千丈的这4位女明星,到底冤不冤(从万人嫌终成团宠[穿书])