图形化计算器(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偶像刘卓恒MV天天快乐 AI星企划

AI偶像刘卓恒MV天天快乐 AI星企划

袁弘“影帝背后的男人”,简称“帝后”!真人版坐我前面必拿奖!

更巧的是,袁弘曾多次在影视作品中扮演过刘秀、李治等帝王角色,这让网友们玩起了谐音梗,把他戏称为“帝后”,意思就是“影帝身后的男人”,这个称号不仅增添了不少趣味性,也让他变得更加特别。2025年,『梁朝伟』凭借电…

袁弘“影帝背后的男人”,简称“帝后”!真人版坐我前面必拿奖!

别让小故障拖垮生产!东莞168元机床维修人工费,精准排查+快速修复(故障小的车)

抱着“先让师傅看看问题在哪”的心态,赵老板预约了服务——5分钟内客服就回电确认了机床型号和故障现象,3小时内维修师傅准时上门,仅用1小时就精准排查出故障根源:是系统参数紊乱导致的报警和精度偏差,无需更换配件,…

别让小故障拖垮生产!东莞168元机床维修人工费,精准排查+快速修复(故障小的车)

男人和女人除了生理上不同,还有什么区别,过来人说的太好了(男人和女人除了没睡之外什么都干了,这意味着什么)

情感表达上,那差别就更鲜活了。她们会找信任的闺蜜煲电话粥,或者在『社交媒体』上用隐晦的方式抒发一下,在倾诉和倾听的过程中,好像压力也随之流走了一半。『娱乐圈』️就像个放大镜,把这些男女之间思维和处事的小差异,放大了给…

男人和女人除了生理上不同,还有什么区别,过来人说的太好了(男人和女人除了没睡之外什么都干了,这意味着什么)

不止力捧『谢娜』!央视秋晚用三个行为,给内娱舞台提了个醒(『谢娜』捧起来的男星)

令人意外的是,以『谢娜』的抢眼和选秀歌手的集体发力为契机,整场晚会竟在观众的笑语与好评中,悄然揭示了内娱生态的三个崭新趋势。面对演员登台献唱这一常见环节,央视秋晚巧妙地采用了“一带一”的搭档模式:王耀庆配姚晓棠,…

不止力捧『谢娜』!央视秋晚用三个行为,给内娱舞台提了个醒(『谢娜』捧起来的男星)